我用
CDatabase database;
database.Openex("DSN=A;UID=SA;PWD=;",CDatabase::noOdbcDialog)
CRecordset recordset(&database);
recordset.Open(CRecordset::forwardOnly, _T("select * from authors"));当我用recordset.GetRecordCount()时,返回总为1,换别的数据库也不行,表中已有很多记录,不知怎么???还有当连接MS SQL Server2000时,当有字段为nvarchar型时,

CDBVariant dbVariant;
recordset.GetFieldValue((short)0, dbVariant);
也出错,不知怎么???

解决方案 »

  1.   

    CRecordset::forwardOnly返回记录数应该是-1,应该用可以返回的游标
      

  2.   

    GetRecordCount()这个函数只能得到你曾访问过的最大记录索引,所以你
    一行一行地MoveNext()到最后一行再用GetRecordCount()就能得到正确的
    值了,(很傻吧,你看一看MSDN就知道了,很多VC书上也有写的,不知为什
    么会这样设计,哈,管它呢,喝酒)
    在GetFieldValue(..)时,那个index只能从小到大取,你要是取了1再取0
    它就出错(经验这样的,不知是不是我的VC版本没升级反正资料上没
    查到过)
      

  3.   

    coolbye(变形虫) 
    那就要看你报的是什么错了,错误信息对诊断是很重要的哦,呵呵望闻问切嘛!有的人不用问就能知道是哪年的酒,那都是电影里的,哈哈
      

  4.   

    我知道了,ODBC类不支持varchar类型