VC使用CDatabase类和CRecordset类以ODBC方式连接MS SQL SERVER2000数据库。在调用CRecordset对象的GetFieldValue方法时,总是弹出错误:无效的描述符索引。奇怪,我填写的字段名在数据库里明明有啊,怎么提示错误。重写一遍,不行。复制过来,还是不行。最后终于在网上找到一位仁兄曾经遇到过同样的问题,还给出了解决方法:
在调用GetFieldValue函数取得字段值的时候,多次调用返回不同字段的值。调用的顺序一定要和数据库里的字段顺序一样。否则就会出错。
这难道是SQL SERVER的bug?要不就是VC的bug,或者说是VC里的MFC的bug,或者说是VC里的MFC里的CRecordset类的bug。呵呵。总之是微软的bug。
除此之外,还有CRecordset对象的GetRecordcount函数返回值除了0就是1。在有记录的时候就返回1否则返回0。要想真正返回记录数,还得把每条记录都遍历一遍。
还有,CRecorset是不允许直接更新数据的,除非派生出新类。但是如果不想建新类,可以使用CDatabase对象的ExecuteSql函数来直接调用SQL语句,类似ADO的Command对象。