while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)//一行一行的读取,这叫做游标读取, 直到遇
                                                            //到SQL_NO_DATA_FOUND为止
{
TCHAR s[20];
 SQLINTEGER i ;
 SQLGetData(hstmt,1,SQL_C_LONG,&i,sizeof(i),&cbsatid);//
 wsprintf(s,"%d",i);
 MessageBox(hwnd,s,TEXT(""),MB_OK);
 
}
连接数据库都是对的,为什么这段语句会陷入死循环呢?而且毒不出来数据库中保存的数据

解决方案 »

  1.   

    SQLFetch(hstmt) == SQL_SUCCESS || SQLFetch(hstmt) == SQL_SUCCESS_WITH_INFO一般这样,判断正确的情况,你不能保证出错一定是SQL_NO_DATA_FOUND
      

  2.   

    为什么不用SQLBindCol呢
    SQLGetData 是为长数据循环读取而设计的,对于操作有诸多限制<查阅帮助文档>
    SQLBindCol(hstmt,1, SQL_C_SLONG, &i,0,NULL);
    while(SQLFetch(hstmt) != SQL_NO_DATA) 
    {
      //Treat i as u want...
    }