C# MySqlCommand.lastInserteDod返回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();

我试图执行存储过程并返回最后一个instered id,但每次结果都是0

我就是这样做的:

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?