вставка sqldatasource возвращает значение идентификатора - PullRequest
0 голосов
/ 29 сентября 2010

Я использую SqlDataSource sds = new SqlDataSource ();в коде и вставка с использованием sds.Insert ();Подскажите, пожалуйста, как получить значение первичного ключа вставленной записи?Обратите внимание, что я не использую хранимую процедуру.

Ответы [ 2 ]

1 голос
/ 15 января 2016

Я знаю, что это довольно старый пост, но в случае, если кто-то приземлится здесь одновременно ...

Что касается ответа Майкла Икинса (см. Выше), безопаснее использовать SCOPE_IDENTITY(), а не @@IDENTITY.

По MSDN SCOPE_IDENTITY

"... SCOPE_IDENTITY возвращает значения, вставленные только в текущий объем; @@ IDENTITY не ограничивается конкретной областью действия. "

1 голос
/ 29 сентября 2010

Last_Insert_ID ();

Дает вам последний идентификатор первичного ключа, вы можете просто добавить его в конце текущей вставки, и значение ключа будет возвращено из вашей вставки.

Вот пример C #:

tring sqlIns = "INSERT INTO table (name, information, other) VALUES (@name, @information, @other)";
db.Open();
try
{
 SqlCommand cmdIns = new SqlCommand(sqlIns, db.Connection);
 cmdIns.Parameters.Add("@name", info);
 cmdIns.Parameters.Add("@information", info1);
 cmdIns.Parameters.Add("@other", info2);
 cmdIns.ExecuteNonQuery();

 cmdIns.Parameters.Clear();
 cmdIns.CommandText = "SELECT @@IDENTITY";


 // Get the last inserted id.

 int insertID = Convert.ToInt32( cmdIns.ExecuteScalar() );


 cmdIns.Dispose();
 cmdIns = null;
}
catch(Exception ex)
{
throw new Exception(ex.ToString(), ex);
}
finally
{
db.Close();
}

Я нашел это в MSDN:

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/91bd10ce-c83b-4766-920b-2137ddc29908

...