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);