Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2011, 16:44   #1
Lindemann66
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 127
Вопрос ODBC - Last Insert Id

Привет всем!
Стандартная проблема, но, к сожалению, не знаю как решить, так rак не могу найти информацию
Нужно получить id записи после добавления

Код:
try {
		CDatabase db;
		if (db.Open("poll")) {
			CString query;
			query.Format("INSERT INTO pages "
				"VALUES('%s', '%s', '%s', '%s')", url, title, keyWords, hash);
			db.ExecuteSQL(query);
			db.Close();
		}
	} catch(CDBException *pe) {
		AfxMessageBox(pe->m_strError);
		pe->Delete();
	}
В учебнике по ODBC сказано, что функция ExecuteSQL
Цитата:
применима только для тех операторов SQL, в результате которых не ожидается возвращения данных
Больше никаких методов по выполнению запросов, кроме ExecuteSQL, я не нашёл

Кто-то сталкивался с подобной проблемой?
Как её решать?

Последний раз редактировалось Lindemann66; 21.07.2011 в 16:47.
Lindemann66 вне форума Ответить с цитированием
Старый 22.07.2011, 14:40   #2
Lindemann66
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 127
По умолчанию

Вобщем, сам отвечаю на свой вопрос
Может кому-то будет полезно

Код:
PagesSet *set = new PagesSet();
set->Open(CRecordset::dynamic, "SELECT id FROM pages");
set->MoveLast();
insert_id = set->m_dbopagesid;
set->Close();
delete set;
Кстати, к вопросу о том, что при такой выборке, если в базе будет 1000000 записей, это будет сильно тормозить
Указатель на set ссылается только на первую запись в выборке
Lindemann66 вне форума Ответить с цитированием
Старый 23.07.2011, 17:36   #3
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

А если перед выбором (SELECT id FROM pages) кто-то добавит запись, то у Вас уже будет не верный идентификатор.

Кстати что за СУБД?
psycho-coder вне форума Ответить с цитированием
Старый 27.07.2011, 13:41   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Вот нагуглил
Цитата:
после инсерта
select @@identity
или
select scope_identity() -- это лучше
http://www.sql.ru/Forum/actualthread...&tid=38778&hl=
psycho-coder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ODBC в Linux knight Lazarus, Free Pascal, CodeTyphon 7 29.10.2010 16:47
ASP и ODBC werser Помощь студентам 0 25.10.2010 00:28
excel-odbc kuzminki Microsoft Office Excel 0 26.08.2009 12:48
ODBC и MFC MadDog__ Win Api 0 06.02.2009 01:18
Odbc Apo Компоненты Delphi 7 11.03.2008 11:54