Как получить AutoNumber из DataTable AutoIncrementColumn со строго типизированной базой данных в c #? - PullRequest
0 голосов
/ 09 июня 2009

Я добавил строго типизированную базу данных (MySQl) в проект на C # (.net 3.5). База данных (DB.Electrophysiology_Data) имеет несколько реляционных таблиц, но в основном я хочу добавить новый 'filesRow' в таблицу 'files'. Я использую что-то вроде следующего кода.

DB.Electrophysiology_Data.filesRow new_file = ds.files.NewfilesRow();

... установить значения для нового_файла (например, имя файла, дата создания и т. Д.)

ds.files.AddfilesRow(new_file);

... со временем я обновляю базу данных через DataAdaptor

file_adaptor.Update(ds.files)

Проблема в том, что для столбца автоинкремента (FileID) установлено значение -1. После закрытия моего приложения и перезапуска я вижу, что новый файл filesRow добавлен в базу данных нормально, и теперь у него есть соответствующее значение FileID (около 5000, поскольку у меня уже столько строк в файлах DataTable).

Есть ли способ узнать значение FileID, установленное базой данных, используя объекты базы данных строгого типа (DataSet, DataTable и т. Д.).

Спасибо за любую помощь, Пит

1 Ответ

1 голос
/ 23 июня 2009

Чтобы адаптер извлекал автоматически сгенерированный идентификатор из базы данных сразу после того, как вы вставили новую запись, вам нужно выполнить SELECT.

В My SQL Вы можете получить самое последнее значение AUTO_INCREMENT с помощью функции SQL LAST_INSERT_ID ()

Если мастер настройки запросов в наборах данных с типом stong не может сгенерировать запрос для MySQL надлежащим образом, вы можете вручную отредактировать команду INSERT и добавить предложение SELECT здесь Обычно, если вы команда выглядит как

insert my_table (field1, field2, ...) values (@field1, @field2, ...)
select id, field1, field2 ... from my_table where id = LAST_INSERT_ID()

Как видите, нам нужно выбрать не только ID, но и другие поля, чтобы получить последние значения из таблицы (которые могут отличаться от значений в наборе данных, если существуют какие-либо значения по умолчанию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...