2 qq 24631785 qq_24631785 于 2014.12.18 23:40 提问

[ODBC Microsoft Access Driver]非法的游标状态 ????
 char sql[81];
sprintf(sql,"INSERT INTO studen (xingming,xuehao,sex,age) VALUES ('%s',%d,'%s',%d)",name,numxx,sex,nAge);
// inserts a new row to the table
int count = db.Execute(sql);

以上代码是通过ODBC插入一个记录,编程语言是C++。
但是db.Execute后,运行提示“"[Microsoft][ODBC Microsoft Access Driver]非法的游标状态 "

网上搜索不到解决方法,只好求助各位了

xingming 是数据库的姓名字段;
xuehao 是代表学号,数字类型

1个回答

lzp_lrp
lzp_lrp   Ds   Rxr 2014.12.19 08:53

请参考以下内容:
ODBC连接数据持续执行两次sql语句结果提示:[Microsoft][ODBC Microsoft Access Driver]非法的游标状态
例如:
sprintf(sqlStr,"select passCode from passCode_t where stationCode='A01' and currentDate='2011-03-19'");
connectDB_ACCESS(); //连接ACCESS数据库
retcode = SQLExecDirect(hstmtAcc,(SQLCHAR *)sqlStr,SQL_NTS);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode=SQLBindCol(hstmtAcc,1,SQL_C_CHAR,passCode_str,4,&cb);

while (TRUE)
{
retcode = SQLFetch(hstmtAcc);

if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){
}else {
break;
}

}
}
//紧接着执行下面的语句
sprintf(sqlStr,"update passCode_t set passCode='001' where stationCode='A01' and currentDate='2011-03-19'");
retcode = SQLExecDirect(hstmtAcc,(SQLCHAR *)sqlStr,SQL_NTS);

结果提示上面开头处的错误!
在第一次执行完语句后,调用:
retcode = SQLCloseCursor(hstmtAcc);
retcode = SQLFreeStmt(hstmtAcc, SQL_CLOSE);
通过微软的sql server资料了解到http://support.microsoft.com/kb/253010/zh-cn
引用:
允许在单个连接上的多个并发的语句句柄的方式使用 Microsoft SQL Server ODBC 驱动程序 (sqlsrv32.dll) 时, 繁忙的连接可能会留下游标 SQL Server 数据库中打开无警告或通知给用户。发生这种情况主要情况下在一个或多个语句句柄在流水 (仅向前、 只读游标) 模式下工作。

这可以有两个而不是严重的负面影响。第一个副作用是游标可以保持打开,消耗内存并可能会导致锁对记录打开数据库服务器上。第二个的副作用是在非流水 ODBC 的语句句柄上执行语句的后续尝试可能会生成没有明显原因的以下错误:
SQLState: 24000 [Microsoft] [ODBC SQL Server 驱动程序] 无效的游标状态

此 行为发生与 sqlsrv32.dll 驱动程序版本 3.70.0690 (Microsoft 数据访问组件 [MDAC] 2.1 SP2) 和更早版本,并与 sqlsrv32.dll 驱动程序版本 3.70.820 (MDAC 2.5/windows 2000)。

在流水模式操作正忙于 SQL Server ODBC 驱动程序时没有其他活动发生在连接上直到完成该操作。这包括 sp_cursorclose 调用驱动程序问题时调用 SQLFreeStmt 或 SQLCloseCursor。

当驱动程序出现故障时关闭游标 SQLFreeStmt 和 SQLCloseCursor 这两个返回 SQL_SUCCESS 时,ODBC,要过帐没有错误和失败的迹象是可用于应用程序或用户。但是,光标保持在 SQL Server 中打开,并且该语句句柄仍具有与其关联的光标标识符。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!