информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Страшный баг в WindowsСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[win32] как осуществить update-запрос с помощью sqlexecdirect? 12.11.09 14:32  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 12.11.09 14:37  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
Напиал такую функцию. Если ей подсовывать SELECT-запрос, то она работает, а если UPDATE или INSERT, то ругается: SQL_STATE=24000; Error_text: [Microsoft][Диспетчер драйверов ODBC] Недопустимое состояние курсора. В чём касяк?
BOOL CODBC::UpdateBalance(DWORD dwID, DWORD dwBalance)
{
	SQLRETURN	ret;
	char szQuery[MAXSIZE_QUERYSTR];

	wsprintf(szQuery, "UPDATE users SET balance=%d WHERE (id=%d)", dwBalance, dwID);
	
	ret = SQLExecDirect(m_hStmt, (SQLTCHAR *) szQuery, lstrlen(szQuery));
	if (SQL_SUCCESS != ret && SQL_SUCCESS_WITH_INFO != ret)
	{
 
		char Sqlstate[6], text[1000];
		SQLINTEGER NativeError;
		SQLSMALLINT len;

		if (SQL_SUCCESS != SQLGetDiagRec(SQL_HANDLE_STMT, m_hStmt, 1, (SQLCHAR *) Sqlstate, &NativeError, (SQLCHAR *) text, 1000, &len))
			return FALSE;



		m_pErrorManager->WriteError("Can't process SQLExecDirect");
		return FALSE;
	}

	return TRUE;
}

---

PS. Может быть это важно? Я использую в качестве БД файл .mdb, совместимый с Microsoft Access 97. Вот строка подключения: "DBQ=mydb.mdb;Driver={Microsoft Access Driver (*.mdb)};"
[offtopic] Кстати, чем вызвано использование ODBC, ADO удобней, ИМХО. 12.11.09 20:29  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Дык а что он разве не осуществляется? Ты забей на ошибку 24000, она диагностическая. Типа "записи не возвращены". 12.11.09 20:11  
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 12.11.09 21:29  Количество правок: 3
<"чистая" ссылка> <обсуждение закрыто>
http://msdn.microsoft.com/en-us/library/ms715413(en-us,VS.85).aspx
Сорри, проблема оказалась в моей глупости. Я использовал для... 13.11.09 11:41  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
Сорри, проблема оказалась в моей глупости. Я использовал для всех запросов один и тот же дескриптор, а не создавал его для каждого нового запроса, из-за этого и были проблемы. Теперь всё путём.

Почему ODBC? Потому что эта технология мне знакома, а ADO нет.
Про ADO 14.11.09 13:10  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
> Почему ODBC? Потому что эта технология мне знакома, а ADO нет.
Да, раз уж знакомо ODBC, и умеешь пользоваться -- почему бы нет...
ADO у M$ вштыривает, потому что выше уровень -- COM-объекты подключения, хранимых процедур, рикордсеты, с ними проще работать, особенно в тех средах, где работа с COM/ActiveX простая.
C/C++ чтот не очень радует простотой работой с COM, хотя тем, кто грызёт ODBC, он наверное покажется гораздо проще.
Ясно. Спасибо 19.11.09 03:46  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach