2013-03-12 10 views
11

に挿入IDを取得します。私は、テーブルに行を挿入するには、このメソッドを使用しています:C#が自動インクリメント

  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(); 

私もAuto Incrementを持つid列を肝炎。 そして、新しい行を挿入するときに作成されるIDを取得することが可能かどうかを知りたいと思います。

+0

これはあなたの後ですか? http://stackoverflow.com/questions/7982520/get-autoincrement-value-after-insert-query-in-mysql – JeremyWeir

+0

いいえ、私は私が挿入しているIDを欲しい – MTA

答えて

23

MySqlCommand LastInsertedIdプロパティにアクセスできます。

SET @newPK = LAST_INSERT_ID(); 

をし、別のADO.NETパラメータ "newPK" を追加します。

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

それはありがとうございます!私は1つの挿入ステートメントに複数の行を挿入する場合は、すべてのIDを取得することは可能ですか? – MTA

+0

このメソッドを使用していません.. – dugas

+0

それは私のためにも働いた。ありがとう+1 – docesam

0

基本的に、あなたのCommandTextをの最後にこれを追加する必要があります。コマンドが実行された後、新しい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();