Напиал такую функцию. Если ей подсовывать 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)};"
|