2013-03-12 55 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();