Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL C#最后一次插入_ID()_C#_Mysql - Fatal编程技术网

MySQL C#最后一次插入_ID()

MySQL C#最后一次插入_ID(),c#,mysql,C#,Mysql,我在处理从MySQL插入到我的C#应用程序的最后一个_INSERT_ID()时遇到问题。我不知道我做错了什么,所以任何帮助都将不胜感激 这是一个winforms应用程序。我只需要save方法执行完毕后插入的记录的TicketID 下面是我的MySQL查询: CREATE DEFINER=`COMP`@`%` PROCEDURE `usp_SaveTicket`(IN AssignedToUserID INT, IN LoggedByUserID INT, IN LoggedByUserEmail

我在处理从MySQL插入到我的C#应用程序的最后一个_INSERT_ID()时遇到问题。我不知道我做错了什么,所以任何帮助都将不胜感激

这是一个winforms应用程序。我只需要save方法执行完毕后插入的记录的
TicketID

下面是我的MySQL查询:

CREATE DEFINER=`COMP`@`%` PROCEDURE `usp_SaveTicket`(IN AssignedToUserID INT, IN LoggedByUserID INT,
IN LoggedByUserEmailAddress VARCHAR(200), IN LoggedByUserFullname VARCHAR(200), IN DepartmentID INT,
IN QuickCode VARCHAR(255), IN `Subject` VARCHAR(500), IN `Status` VARCHAR(100), IN Priority INT,
IN CreateDate DATE, IN ModifyDate DATE, IN AutoCloseSent INT, IN FirstMessageID INT, IN LastMessageID INT,
IN Info VARCHAR(500), IN NumberOfReplies INT, OUT TicketID INT)
BEGIN
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
    INSERT INTO table
    (
        staff, customer_id, customer_email, customer_fullname, departmentid, quickcode
        ,`subject`, `status`, priority, created, updated, auto_close_sent, first_msg_id
        ,last_msg_id, info, replies
    )
    VALUES
    (
        AssignedToUserID, LoggedByUserID, LoggedByUserEmailAddress, LoggedByUserFullname, DepartmentID, QuickCode,
        `Subject`, `Status`, Priority, CreateDate, ModifyDate, AutoCloseSent, FirstMessageID,
        LastMessageID, Info, NumberOfReplies
    );
    SET TicketID = LAST_INSERT_ID();
COMMIT;
END
以下是我的C#方法:

下面是我对Save方法的调用:

logic.SaveTicket(false, "usp_SaveTicket", CommandType.StoredProcedure, 0, GlobalVariables.complaintLoggedByID, GlobalVariables.emailAddress, GlobalVariables.complaintLoggedByValue,
                departmentID, quickCode, txtComplaintSubject.Text, "open", GlobalVariables.priorityID, DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")),
                DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")), 0, 0, 0, "", 0);
正如我的
TEST1
TEST2
所示(即使它们被注释掉了),它并没有给出最后一个插入ID()


初始保存将包含零等,我需要TicketID更新此记录以及在其他地方进行插入。我尝试过的任何操作似乎都不起作用:(

执行命令后是否尝试读取参数TickedID的值?我尝试过。如果我尝试过,则会出现异常,因为编译器无法从
MySQLCommand隐式转换。参数
转换为我转换/强制转换为的任何类型。执行显式转换也会失败:(@GrammatonCleric输出Id存储在参数值-
命令中。参数[“TicketID”].Value
我将用SELECT last_INSERT_ID替换存储过程中的最后一行,然后调用ExecuteScalar并将返回值分配给本地TicketID变量,而不是ExecuteScalar。当然,您不再需要TicketID的OUT参数,也不需要ExecuteScalar后面的代码(最后插入ID的执行者)@Steve你是个传奇!非常感谢!!我快疯了。。。
logic.SaveTicket(false, "usp_SaveTicket", CommandType.StoredProcedure, 0, GlobalVariables.complaintLoggedByID, GlobalVariables.emailAddress, GlobalVariables.complaintLoggedByValue,
                departmentID, quickCode, txtComplaintSubject.Text, "open", GlobalVariables.priorityID, DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")),
                DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")), 0, 0, 0, "", 0);