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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Ясно. Спасибо 19.11.09 03:46  Число просмотров: 1051
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
<programming>
[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-2019 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach