如何获取最后一个#insert#id();

sg24os4d  于 2021-06-15  发布在  Mysql
关注(0)|答案(3)|浏览(245)

我环顾四周,仍然不知道如何获得最后一个插入的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();
fslejnso

fslejnso1#

通常,select last \u insert \u id()会在执行insert之后立即在同一个连接上单独执行。最后一次插入的结果是特定于连接的,因此您不必担心其他客户端会“覆盖”您的客户端。
您甚至可以使用相同的命令 cmd.CommandText = "SELECT last_insert_id()"; …但正如其他人所指出的,快速的网络搜索已经为我澄清了这一点,看起来您正在使用的mysql.net连接器已经提供了这种功能,而无需进行第二次查询。

zy1mlcev

zy1mlcev2#

使用 MySqlCommand.LastInsertedId 属性。

pkbketx9

pkbketx93#

你只需要打个电话 cmd.ExecuteNonQuery() 执行insert语句。回来的时候 cmd 对象将具有 .LastInsertedId 为您填充的属性。
这样地:

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);";
    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);
    cmd.ExecuteNonQuery();

    long lastId = cmd.LastInsertedId;
}
catch (Exception ex)
{
    Console.WriteLine(ex.ToString());
}
conn.Close();

相关问题