Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение последней добавленной строки, Использование драйвера ODBC 
V
    Опции темы
Ruslan_
Дата 4.9.2008, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.12.2004

Репутация: нет
Всего: нет



Приветствую!

Как получить последнюю добавленную строку (или точнее говоря ее первичный ключь), используя драйвер ODBC. Есть какой-то универсальный метод для любой БД? Я разрабатываю ПО для работы с СУБД Access и Postgres.

Заранее благодарю.
PM   Вверх
MasterOfCode
Дата 5.9.2008, 06:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



Код


SqlCommand cmdSQL;

//...

cmdSQL.CommandText = "insert into table values('name'); SET @IdParam = CAST(SCOPE_IDENTITY() as INT);";
SqlParameter idParameter = cmdSQL.Parameters.Add("@IdParam", System.Data.SqlDbType.Int)
idParameterJob.Direction = System.Data.ParameterDirection.Output;
cmdSQL.ExecuteNonQuery();
Console.WriteLine(idParameterJob.Value.ToString());

Так.


--------------------
user posted image
PM ICQ   Вверх
Idsa
Дата 5.9.2008, 06:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



MasterOfCode, читайте внимательнее. Необходим универсальный способ под ODBC.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Ruslan_
Дата 5.9.2008, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.12.2004

Репутация: нет
Всего: нет



Если нет (а я уже искал везде, где только можно), можете сказать, как получить строку (или ключевое поле) последней добавленной строки в Access?

В Postgres все понятно: следующее значение из последовательности использовать как значение ключегого поля при вставке строки.
PM   Вверх
MasterOfCode
Дата 5.9.2008, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



Простите за невнимательность. Не знаю как в Access, есть ли там Тригерры и Процедуры, если есть, то можно добавить в таблицу поле например DATE_INSERT типа DateTime, написать триггер который при вставке добавлял дату вставки, и Хранимую процедуру (функцию) на вставку, которая бы добавляла запись, а в качестве возвращаемого параметра возвращала ID записи.


--------------------
user posted image
PM ICQ   Вверх
Idsa
Дата 5.9.2008, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(Ruslan_ @  5.9.2008,  10:26 Найти цитируемый пост)
В Postgres все понятно: следующее значение из последовательности использовать как значение ключегого поля при вставке строки. 

Так можно сделать и в Access: там есть поле типа "Счетчик". Но это неверный подход: между тем, как Вы считаете значение, и сделаете вставку, кто-нибудь может изменить таблицу.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Ruslan_
Дата 5.9.2008, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.12.2004

Репутация: нет
Всего: нет



Как у этого поля типа "Счетчик" запросить следующее значение перед вставкой?
PM   Вверх
Idsa
Дата 5.9.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Ruslan_, а зачем? Оно само выставляется, когда вставляется запись. А в INSERT это поле не указывается.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Varenij
Дата 5.9.2008, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 21.3.2007

Репутация: нет
Всего: нет



Цитата(Idsa @  5.9.2008,  15:48 Найти цитируемый пост)
Ruslan_, а зачем? Оно само выставляется, когда вставляется запись. А в INSERT это поле не указывается.

Не знаю как Вам, но мне очень часто нужно знать ID вставленной строки, чтобы с ней дополнительные манипуляции произвести.
PM MAIL   Вверх
Idsa
Дата 5.9.2008, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(Varenij @  5.9.2008,  16:54 Найти цитируемый пост)
Не знаю как Вам, но мне очень часто нужно знать ID вставленной строки, чтобы с ней дополнительные манипуляции произвести. 

Это уже другой вопрос. Вы говорите о том, чтобы узнать ID после вставки, а Ruslan_, судя по всему, хочет узнать ID до вставки.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Ruslan_
Дата 5.9.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.12.2004

Репутация: нет
Всего: нет



Idsa, знать значение первичного ключа мне необходимо для того, чтобы с добавленной записью в таблице связать записи из др. таблиц, связанных отношением первичный-внешний ключ. А иначе не получится.

На самом деле не важно: сгенерировать следующее значение для счетчика и вставить строку с этим значением или же вставить строку и узнать ее ид. - не важно. Просто нужно получить любыми способами добавленную строку.

Здесь ведь есть программисты для БД. Скажите, пожалуйста, как вы делаете это для Access (если нет общего механизма для любой БД)? (Просто в Access нет типа последовательность, как в Oracle или Postgres.)

PM   Вверх
Ruslan_
Дата 5.9.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.12.2004

Репутация: нет
Всего: нет



Это просто важно очень.

Как получить последнюю добавленную строку в Access'е?
PM   Вверх
Ruslan_
Дата 19.9.2008, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.12.2004

Репутация: нет
Всего: нет



Если кто-то столкнется с такой же проблемой, опишу мое решение.
В зависимости от того, какая СУБД используется, для Oracle и Postgres я перед добавлением новой записи предварительно получаю ее ид. из последовательности; для Access'а получаю максимальный ид. и использую на 1 больше. Access открываю в монопольном режиме. Использую драйвер ODBC.

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0912 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.