- 论坛徽章:
- 0
|
1. 存储过程
CREATE PROCEDURE `test`.`usp_replyinsert`( out p_replyid int, p_itemid int, p_replytext text, p_createuserid int, p_createdate datetime)
begin
insert into `reply`(
replyid,
itemid,
replytext,
createuserid,
createdate
)
values (
p_replyid,
p_itemid,
p_replytext,
p_createuserid,
p_createdate
) ;
SELECT LAST_INSERT_ID() into p_replyid;
Procedure是好的, 可以取得p_replyid值从MySqlCommand.Paramters["p_replyid"].Value;
但是, 我需要的SourceColumn能取得值:
2. Code:
MySqlCommand insertCom = new MySqlCommand("usp_ReplyInsert", conn);
insertCom.CommandType = CommandType.StoredProcedure;
MySqlParameter para = insertCom.Parameters.Add( "p_replyid", MySqlDbType.Int32 );
para.Direction = ParameterDirection.Output;
para.SourceColumn = "replyid"; // I set sourcecolumn for the identity field, but get DbNull after insert.
para = insertCom.Parameters.Add( "p_itemid", MySqlDbType.Int32 );
para.SourceColumn = "itemid";
para = insertCom.Parameters.Add( "p_replytext", MySqlDbType.VarChar, 100 );
para.SourceColumn = "replytext";
para = insertCom.Parameters.Add( "p_createuserid", MySqlDbType.Int32 );
para.SourceColumn = "createuserid";
para = insertCom.Parameters.Add( "p_createdate", MySqlDbType.Datetime);
para.SourceColumn = "createdate";
if( conn.State == ConnectionState.Closed )
conn.Open();
MySqlDataAdapter sda = new MySqlDataAdapter();
sda.InsertCommand = insertCom;
sda.Update( dataSet );
object outvalue = dataSet.Tables[0].Rows[1]["replyid"]; // outvalue 是 DBNull;
有人知道这个吗?
谢谢. |
|