我环顾四周,仍然不知道如何获得最后一个插入的id。我添加了声明 SELECT LAST_INSERT_ID();
在mysql语句的末尾,我正在执行。我把价值储存在 prID = Convert.ToInt32(cmd.ExecuteScalar());
此命令正在我的数据库中创建两个示例。我很确定我需要分开这两个声明,但不确定如何在仍然得到最后一个id。
try
{
Console.WriteLine("Connecting to MySQL...");
conn.Open();
string sql = "INSERT INTO pull_requests (repoID, branchID, fileID, prStatus, prComments) VALUES (@rID, @bID, @fID, @prS, @prC); SELECT LAST_INSERT_ID();";
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@rID", RI);
cmd.Parameters.AddWithValue("@bID", BI);
cmd.Parameters.AddWithValue("@fID", FI);
cmd.Parameters.AddWithValue("@prS", 0);
cmd.Parameters.AddWithValue("@prC", comment);
prID = Convert.ToInt32(cmd.ExecuteScalar());
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
3条答案
按热度按时间fslejnso1#
通常,select last \u insert \u id()会在执行insert之后立即在同一个连接上单独执行。最后一次插入的结果是特定于连接的,因此您不必担心其他客户端会“覆盖”您的客户端。
您甚至可以使用相同的命令
cmd.CommandText = "SELECT last_insert_id()";
…但正如其他人所指出的,快速的网络搜索已经为我澄清了这一点,看起来您正在使用的mysql.net连接器已经提供了这种功能,而无需进行第二次查询。zy1mlcev2#
使用
MySqlCommand.LastInsertedId
属性。pkbketx93#
你只需要打个电话
cmd.ExecuteNonQuery()
执行insert语句。回来的时候cmd
对象将具有.LastInsertedId
为您填充的属性。这样地: