Ситуация следующая, есть объект DataSet связанный с таблицей БД у которой есть поле id (автоинкементное). Вставляю в DataSet новую строку (естественно id не указываю). После этого вызываю метод Update(). Теперь нужно узнать id этой записи (т.е. какой id присвоил Sql сервер).
Здравствуйте, exp131, Вы писали:
E>Добрый день!
E>Ситуация следующая, есть объект DataSet связанный с таблицей БД у которой есть поле id (автоинкементное). Вставляю в DataSet новую строку (естественно id не указываю). После этого вызываю метод Update(). Теперь нужно узнать id этой записи (т.е. какой id присвоил Sql сервер).
E>Заранее благодарен за ответ.
E>данное сообщение получено с www.gotdotnet.ru E>ссылка на оригинальное сообщение
Для MS SQL есть пременная @@IDENTITY которая содержит последнее значение астоикремента (для БД !!!)
IDENT_CURRENT('table_name') для таблицы
Re[2]: Получения id последней изменной записи в бд
От:
Аноним
Дата:
02.10.06 11:41
Оценка:
Здравствуйте, vitz, Вы писали:
V>Здравствуйте, exp131, Вы писали:
E>>Добрый день!
E>>Ситуация следующая, есть объект DataSet связанный с таблицей БД у которой есть поле id (автоинкементное). Вставляю в DataSet новую строку (естественно id не указываю). После этого вызываю метод Update(). Теперь нужно узнать id этой записи (т.е. какой id присвоил Sql сервер).
E>>Заранее благодарен за ответ.
E>>данное сообщение получено с www.gotdotnet.ru E>>ссылка на оригинальное сообщение V>Для MS SQL есть пременная @@IDENTITY которая содержит последнее значение астоикремента (для БД !!!) V>IDENT_CURRENT('table_name') для таблицы
Спасибо, все работает, но есть небольшой глюк.
Написал хранимую процедуру которая добавляет запись в таблицу и возвращает текущий id. Запись в таблицу добавляется но, иногда возникает ошибка вот кусок кода:
orderSet.Tables["Заказы"].Rows.Add(newOrder);
aOrders.Update(orderSet.Tables["Заказы"]); //запись в таблицу добавляется (проверял)
OrderID = (int)newOrder["id"]; //но на эту строчку выдает ошибку "Specified cast is not valid.", хотя при
//повторном обращении все нормально - выдает id новой записи
Re[3]: Получения id последней изменной записи в бд
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, vitz, Вы писали:
V>>Здравствуйте, exp131, Вы писали:
E>>>Добрый день!
E>>>Ситуация следующая, есть объект DataSet связанный с таблицей БД у которой есть поле id (автоинкементное). Вставляю в DataSet новую строку (естественно id не указываю). После этого вызываю метод Update(). Теперь нужно узнать id этой записи (т.е. какой id присвоил Sql сервер).
E>>>Заранее благодарен за ответ.
E>>>данное сообщение получено с www.gotdotnet.ru E>>>ссылка на оригинальное сообщение V>>Для MS SQL есть пременная @@IDENTITY которая содержит последнее значение астоикремента (для БД !!!) V>>IDENT_CURRENT('table_name') для таблицы
А>Спасибо, все работает, но есть небольшой глюк.
А>Написал хранимую процедуру которая добавляет запись в таблицу и возвращает текущий id. Запись в таблицу добавляется но, иногда возникает ошибка вот кусок кода:
А>
А> orderSet.Tables["Заказы"].Rows.Add(newOrder);
А> aOrders.Update(orderSet.Tables["Заказы"]); //запись в таблицу добавляется (проверял)
А> OrderID = (int)newOrder["id"]; //но на эту строчку выдает ошибку "Specified cast is not valid.", хотя при
А> //повторном обращении все нормально - выдает id новой записи
А>
Я вот сам не берусь судить с чем это связано, но Autoincrement поля (по дефолту) decimal.
Номально приведите тип и все заработает.
Re[3]: Получения id последней изменной записи в бд
От:
Аноним
Дата:
02.10.06 12:14
Оценка:
Дело в том что поле id именно int. Я подозреваю, что это как-то связанно с задержкой при выполнении Update, т.е. запись еще не добавилась, а я уже пытаюсь получить id который равен DBNull, вот и возникает ошибка. Т.е. надо заставить программу подождать окончания операции с данными, а вот как это сделать?
Здравствуйте, exp131, Вы писали:
E>Дело в том что поле id именно int. Я подозреваю, что это как-то связанно с задержкой при выполнении Update, т.е. запись еще не добавилась, а я уже пытаюсь получить id который равен DBNull, вот и возникает ошибка. Т.е. надо заставить программу подождать окончания операции с данными, а вот как это сделать?
Всем спасибо за ответы, все работает. Проблема была ранее, а приведенный пример полностью работоспособен.