2013-03-12 57 views
11

我使用这种方法插入行插入表:C#获取插入的ID与自动递增

  MySqlConnection connect = new MySqlConnection(connectionStringMySql); 
      MySqlCommand cmd = new MySqlCommand(); 

      cmd.Connection = connect; 
      cmd.Connection.Open(); 

      string commandLine = @"INSERT INTO Wanted (clientid,userid,startdate,enddate) VALUES" + 
       "(@clientid, @userid, @startdate, @enddate);"; 
      cmd.CommandText = commandLine; 

      cmd.Parameters.AddWithValue("@clientid", userId); 
      cmd.Parameters.AddWithValue("@userid", ""); 
      cmd.Parameters.AddWithValue("@startdate", start); 
      cmd.Parameters.AddWithValue("@enddate", end); 

      cmd.ExecuteNonQuery(); 
      cmd.Connection.Close(); 

我也甲肝ID列有Auto Increment。 我想知道是否有可能得到我插入一个新行时创建的id。

+0

这是你在追求什么? http://stackoverflow.com/questions/7982520/get-autoincrement-value-after-insert-query-in-mysql – JeremyWeir 2013-03-12 23:01:10

+0

不,我想要我插入的ID – MTA 2013-03-12 23:02:04

回答

23

您可以访问MySqlCommand的LastInsertedId属性。

cmd.ExecuteNonQuery(); 
long id = cmd.LastInsertedId; 
+0

谢谢你的工作!如果我想在一个插入语句中插入多行,有可能获得每个ID? – MTA 2013-03-12 23:06:37

+0

不使用此方法.. – dugas 2013-03-12 23:10:26

+0

它也适用于我。谢谢+1 – docesam 2014-02-17 05:59:27

0

基本上你应该添加此结束你的CommandText的:

SET @newPK = LAST_INSERT_ID(); 

并添加其他ADO.NET参数 “newPK”。执行命令后,它将包含新的ID。

1
MySqlConnection connect = new MySqlConnection(connectionStringMySql); 
MySqlCommand cmd = new MySqlCommand(); 

cmd.Connection = connect; 
cmd.Connection.Open(); 

string commandLine = @"INSERT INTO Wanted (clientid,userid,startdate,enddate) " 
    + "VALUES(@clientid, @userid, @startdate, @enddate);"; 
cmd.CommandText = commandLine; 

cmd.Parameters.AddWithValue("@clientid", userId); 
**cmd.Parameters["@clientid"].Direction = ParameterDirection.Output;** 
cmd.Parameters.AddWithValue("@userid", ""); 
cmd.Parameters.AddWithValue("@startdate", start); 
cmd.Parameters.AddWithValue("@enddate", end); 

cmd.ExecuteNonQuery(); 
cmd.Connection.Close();