ODBC绑定提示SQL_NEED_DATA

xsyxt 2013-05-17 02:26:18
使用ODBC的函数访问数据库,用SQLPrepare准备查询语句,只用到一个?,之后用SQLBindParameter帮定该参数(是个字符串),再用SQLExecute执行——SQLPrepare和SQLBindParameter都返回SQL_SUCCESS,但SQLExecute返回99(SQL_NEED_DATA)!

SQLPrepare只有一个参数需要绑定(只用了一个“?”),SQLBindParameter函数也成功了,为什么执行的时候还是SQL_NEED_DATA呢?

不知哪位大哥不吝赐教,小弟万分感激!


代码(相关部分,稍作简化):

//定义数据库操作相关句柄
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;

//定义需要的参数
WCHAR szName[MAXLOADSTRING];
LONG cbName;

//////////////////
////常规的设置////
//返回值全部正常//
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
SQLConnect(hdbc, 数据库名, SQL_NTS, NULL, SQL_NTS, NULL, SQL_NTS);
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
//////////////////
//////////////////

//准备SQL语句,返回正常
SQLPrepare(hstmt, L"SELECT Number FROM 表名 WHERE Name=?", QL_NTS);
//绑定参数,返回正常
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_WCHAR, SQL_WCHAR, sizeof(WCHAR)*MAXLOADSTRING, 0, szName, 0, &cbName);
//执行SQL语句,返回SQL_NEED_DATA
retcode=SQLExecute(hstmt);
...全文
280 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsq2420 2013-08-15
  • 打赏
  • 举报
回复
初始化cbName = SQL_NTS

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧