代码部分:
int real_ID;//记录查询到的会员编号
char real_pwd[20];//记录查询到的会员密码
long lenOut1, lenOut5; RETCODE error;
HENV env;//环境句柄
HDBC conn;//连接句柄
HSTMT stmt;//语句句柄 error = SQLAllocEnv(&env);//初始化ODBC环境,返回环境句柄
error = SQLAllocConnect(env, &conn);//为连接句柄分配内存,返回连接句柄
error = SQLConnect(conn, (SQLWCHAR*)L"restaurant", SQL_NTS, (SQLWCHAR*)L"sa", SQL_NTS, (SQLWCHAR*)L"", SQL_NTS);//连接一个SQL数据源
error = SQLAllocStmt(conn, &stmt);//为语句句柄分配内存,并返回连接句柄 SQLWCHAR query2[200] = L"select ID, pwd from MEMBERSHIP where ID = 1 and pwd = 'furongrong'";
error = SQLExecDirect(stmt, query2, SQL_NTS);//把SQL语句送到数据库服务器,请求执行由SQL语句请求的数据库访问
//error = SQLExecDirect(stmt, query, SQL_NTS);//把SQL语句送到数据库服务器,请求执行由SQL语句请求的数据库访问
if (error == SQL_SUCCESS)
{
error = SQLBindCol(stmt, 1, SQL_C_LONG, &real_ID, 0, (SQLINTEGER*)&lenOut1);
error = SQLBindCol(stmt, 5, SQL_C_CHAR, real_pwd, sizeof(real_pwd), (SQLINTEGER*)&lenOut5);//有问题的地方!!!
error = SQLFetch(stmt);
while (SQLFetch(stmt) == SQL_SUCCESS)
{
cout << real_ID << "***" << real_pwd << endl;
char* real_ID_ch = NULL;
real_ID_ch = new char[8];
itoa(real_ID, real_ID_ch, 10);
if (((*real_ID_ch) == (*ID)) && ((*real_pwd) == (*pwd)))
{
result = true;
delete []real_ID_ch;
real_ID_ch = NULL;
break;

else
{
result = false;
}
}
}
SQLFreeStmt(stmt, SQL_DROP);//释放与语句句柄相关的资源
SQLDisconnect(conn);//切断连接
SQLFreeConnect(conn);//释放与连接句柄相关的资源
SQLFreeEnv(env);//释放与环境句柄相关的资源
……
问题是:
我如果只绑定第一列,是可以Fetch成功的;如果再绑定了第5列(pwd列),就导致Fetch返回-1了。这是什么回事啊!!!救命啊~谢谢!