2013-03-12 10 views
11

Używam tej metody, aby wstawić wiersz do tabeli:C# Get insert id z automatycznego przyrostu

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

I hav także kolumnę id, które mają Auto Increment. Chcę wiedzieć, czy można uzyskać identyfikator, który jest tworzony po wstawieniu nowego wiersza.

+0

Czy to jest to, czego szukasz? http://stackoverflow.com/questions/7982520/get-autoincrement-value-after-insert-query-in-mysql – JeremyWeir

+0

Nie. Chcę, aby identyfikator został wstawiony – MTA

Odpowiedz

23

Możesz uzyskać dostęp do właściwości MySqlCommand LastInsertedId.

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

Dziękuję, że to działa! i jeśli chcę wstawić wiele wierszy w jednym poleceniu wstawienia, możliwe jest uzyskanie każdego identyfikatora? – MTA

+0

Nie używając tej metody .. – dugas

+0

to działało również dla mnie. Dziękujemy +1 – docesam

0

Zasadniczo należy dodać to do końca swojego CommandText:

SET @newPK = LAST_INSERT_ID(); 

i dodać kolejny parametr ADO.NET "newPK". Po wykonaniu polecenia będzie zawierać nowy identyfikator.

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(); 
Powiązane problemy