Получения id последней изменной записи в бд
От: Аноним  
Дата: 02.10.06 08:40
Оценка:
Добрый день!

Ситуация следующая, есть объект DataSet связанный с таблицей БД у которой есть поле id (автоинкементное). Вставляю в DataSet новую строку (естественно id не указываю). После этого вызываю метод Update(). Теперь нужно узнать id этой записи (т.е. какой id присвоил Sql сервер).

Заранее благодарен за ответ.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Получения id последней изменной записи в бд
От: vitz  
Дата: 02.10.06 10:08
Оценка:
Здравствуйте, exp131, Вы писали:

E>Добрый день!


E>Ситуация следующая, есть объект DataSet связанный с таблицей БД у которой есть поле id (автоинкементное). Вставляю в DataSet новую строку (естественно id не указываю). После этого вызываю метод Update(). Теперь нужно узнать id этой записи (т.е. какой id присвоил Sql сервер).


E>Заранее благодарен за ответ.


E>
данное сообщение получено с www.gotdotnet.ru

E>ссылка на оригинальное сообщение

Для MS SQL есть пременная @@IDENTITY которая содержит последнее значение астоикремента (для БД !!!)
IDENT_CURRENT('table_name') для таблицы
Получения id последней изменной записи в бд
От: Аноним  
Дата: 02.10.06 10:45
Оценка:
http://www.gotdotnet.ru/DotNet/FAQ/DataWorks/ADODotNet/254.aspx

С уважением, Олег Аксенов.
YANA MDNA


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
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  
Дата: 02.10.06 12:00
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, 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, вот и возникает ошибка. Т.е. надо заставить программу подождать окончания операции с данными, а вот как это сделать?


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[4]: Получения id последней изменной записи в бд
От: exp131 Россия  
Дата: 02.10.06 13:27
Оценка:
Здравствуйте, exp131, Вы писали:

E>Дело в том что поле id именно int. Я подозреваю, что это как-то связанно с задержкой при выполнении Update, т.е. запись еще не добавилась, а я уже пытаюсь получить id который равен DBNull, вот и возникает ошибка. Т.е. надо заставить программу подождать окончания операции с данными, а вот как это сделать?


Всем спасибо за ответы, все работает. Проблема была ранее, а приведенный пример полностью работоспособен.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.