我试过MFC的Crecordset,同样会抛出异常,如何解决这个问题呢?
就是读一个字段值以后,不移动指针再次读该字段的值,就会出问题

解决方案 »

  1.   


    Do Until SQLFetch(hstmt) = SQL_NO_DATA_FOUND
    loop
    可以全部读出
      

  2.   

    Do Until SQLFetch(hstmt) = SQL_NO_DATA_FOUND
        ....
        rc = SQLGetData(hstmt, i, SQL_C_CHAR, ColVal, Len(ColVal), ColValLen)
        ....
    loop
      

  3.   

    楼上,偶说的不是这个意思
    我指的是某个记录,如果SQLGetData()一次以后,如果不移动记录指针,并再次读取该字段的话,就会返回SQL_NO_DATA,我看了MFC CRecordset的代码,并且试验过,同样有这个问题
      

  4.   

    SQLGetData和游标的fetch一样,每次都会自动往下移动,所以,你要自己想办法处理一下。还有,你可以考虑使用ADO,不用写那么复杂的调用odbc api的代码,开发速度可以大大提高。
      

  5.   

    sorry,看错了,SQLGetData()是取列的值,但是每次读完以后,就把offset的启始设成刚刚读取的列,你还是需要自己做个结构保存每条记录的内容。建议用ADO,就不用这么麻烦了。
      

  6.   

    楼上的,我是考虑过的,但是那样就会复杂好多啊,所以我先问问有没有其他方法关于ADO,能用的话我早用了,只是环境不允许使用