C# MySqlCommand.lastInserteDod返回0
我试图执行存储过程并返回最后一个instered id,但每次结果都是0 我就是这样做的:C# MySqlCommand.lastInserteDod返回0,c#,mysql,stored-procedures,lastinsertid,C#,Mysql,Stored Procedures,Lastinsertid,我试图执行存储过程并返回最后一个instered id,但每次结果都是0 我就是这样做的: public long InsertActivity(cActivities objAct) { long lastID = 0; try { MySqlCommand myCmd = connection.CreateCommand(); connection.Open();
public long InsertActivity(cActivities objAct)
{
long lastID = 0;
try
{
MySqlCommand myCmd = connection.CreateCommand();
connection.Open();
myCmd.CommandText = "add_activity";
myCmd.CommandType = CommandType.StoredProcedure;
myCmd.Parameters.AddWithValue("@TGUID", objAct.TGUID);
myCmd.Parameters.AddWithValue("@TItem", objAct.TItemID);
myCmd.Parameters.AddWithValue("@ActDesc", objAct.ActivityDesc);
myCmd.Parameters.AddWithValue("@DateStart", objAct.DateStart);
myCmd.Parameters.AddWithValue("@DateEnd", objAct.DateEnd);
myCmd.Parameters.AddWithValue("@ActNote", objAct.Note);
myCmd.Parameters.AddWithValue("@Category", objAct.Category);
if (myCmd.ExecuteNonQuery() > 0)
{
lastID = myCmd.LastInsertedId;
myCmd.Parameters.Clear();
connection.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("ERROR: " + ex.Message);
}
return lastID;
}
下面是添加活动程序
CREATE DEFINER=`root`@`localhost` PROCEDURE `add_activity`(IN `TGuid` VARCHAR(50), IN `TItem` INT, IN `ActDesc` VARCHAR(100), IN `DateStart` DATE, IN `DateEnd` DATE, IN `ActNote` VARCHAR(500), IN `Category` VARCHAR(200), OUT `_lastID` BIGINT)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
INSERT INTO activities (TGUID, TItemID, Descr, DateStart, DateEnd, Note, Category) VALUES (TGuid, TItem, ActDesc, DateStart, DateEnd, ActNote, Category);
我认为问题是因为我调用了存储过程。而不是sql命令。在存储过程中,必须使用
输出
命令清楚地返回id。有时存储过程返回多行,可能您的结果有多行
CREATE PROCEDURE insertAndReturn
AS
BEGIN
INSERT INTO activities (TGUID, TItemID, Descr, DateStart, DateEnd, Note, Category) OUTPUT inserted.TGUID VALUES (TGuid, TItem, ActDesc, DateStart, DateEnd, ActNote, Category);
END
GO
在存储过程中,必须使用
output
命令清楚地返回id。有时存储过程返回多行,可能您的结果有多行
CREATE PROCEDURE insertAndReturn
AS
BEGIN
INSERT INTO activities (TGUID, TItemID, Descr, DateStart, DateEnd, Note, Category) OUTPUT inserted.TGUID VALUES (TGuid, TItem, ActDesc, DateStart, DateEnd, ActNote, Category);
END
GO
能否显示
add\u活动
SP?能否显示add\u活动
SP?