Получить последний вставленный идентификатор возврата из запроса вставки / обновления - PullRequest
4 голосов
/ 26 марта 2012

Я хочу получить последний вставленный идентификатор, возвращаемый при вставке в мою визуальную программу на C #.

// Insert to database
try
{

    int result = int.Parse(tblClipManagerTableAdapter.InsertQuery(textBox2.Text, textBox1.Text).ToString());
    MessageBox.Show(result.ToString());
}
catch (Exception ex) {
    MessageBox.Show("Fejl: " + ex.Message.ToString());
}

Ошибка: «Ссылка на объект не установлена ​​для экземпляра объекта.»

Я установил скалярный режим выполнения tblClipManagerTableAdapter.InsertQuery.

Любая помощь о том, как вернуть последний введенный идентификатор с моим текущим кодом и настройкой?

Использование локальной базы данных SQL (dbClipManager.sdf).

С наилучшими пожеланиями


EDIT

Я думаю, что нашел то, что мог бы использовать.

Но я очень новичок в этом. Не уверены, как полностью написать код? Я привык просто использовать наборы данных, не открывая соединения, выполнять SQL-команды. : О /

http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/1d1d3267-dc29-470b-bb20-00487a39bc87/

С уважением

1 Ответ

4 голосов
/ 26 марта 2012

Есть несколько проблем с вашим подходом, поэтому я бы посоветовал вам быстро ознакомиться с настольным адаптером и убедиться, что вы поняли основы .

  1. Если вы пытаетесь добавить новую запись, вы должны звонить TableAdapter.Insert, а не TableAdapter.Update
  2. Вы не можете создать вторую команду для базы данных и использовать @@IDENTITY, чтобы вернуть ID, который был ранее сгенерирован ... это должно быть возвращено в том же сеансе, иначе SQL не будет знать, какой ID, который вы ожидаете получить.
  3. Если вы установите скалярный режим выполнения адаптера таблицы, то ID будет возвращаемым значением вызова метода. Пожалуйста, смотрите этот Вопрос и Ответ по той же проблеме, с которой вы столкнулись.

EDIT: Пожалуйста, ознакомьтесь с этим кратким описанием того, что вы пытаетесь выполнить.

...