“ODBC驱动程序不支持动态记录集”错误的解决办法

把问题范围缩小到打开记录集的地方,即:

wellSet.Open(CRecordset::dynamic,NULL,CRecordset::none);

然后,由于我是通过vs自动生成的“MFC ODBC Consumer”生成的CRecordSet数据集,所以里面没有打开CDatabase的函数,但是网上的说法主要出现在Open函数上,经过在网上各种搜索资料,找到和数据集相关的说法,然后解决办法是改成

wellSet.Open(CRecordset::snapshot,NULL,CRecordset::none);

然后问题解决!


相关的参考资料如下:

VC6.0数据库编程之MFC ODBC

部分原文为:

b . 定义CRecordset对象,调用其Open方法打开记录集,如 
CRecordset rs(&m_db); 
virtual BOOL Open( UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, DWORD dwOptions = none); 

参数一为打开类型,如下: 

AFX_DB_USE_DEFAULT_TYPE:默认值 
      CRecordset::dynaset:动态记录集,支持双向游标,并保持同所连接的数据源同步,对数据的更新操作可以通过一个fetch操作获取。 

CRecordset::snapshot:静态快照,一旦形成记录集,此后数据源的所有改变都不能体现在记录集里,应用程序必须重新进行查询,才能获取对数据的更新。该类型记录集也支持双向游标。 

CRecordset::dynamic:同CRecordset::dynaset记录集相比,CRecordset::dynamic记录还能在fetch操作里同步其它用户对数据的重新排序,大部分ODBC驱动程序不支持这种记录集 。

CRecordset::forwardOnly:除了不支持逆向游标外,其它特征同CRecordset::snapshot相同。 

参数二为sql查询语句,查询结果保存在记录集中 

参数三指定创建记录集时的常用选项 
CRecordset::none:无选项(缺省),与其它所有选项互斥,可以更新、删除、添加记录 
CRecordset::appendOnly:不允许修改和删除记录,但可以添加记录. 
CRecordset::readOnly:记录集是只读的. 
其它选项查看MSDN 使用信任连接时,如果使用CRecordset::dynaset会出现ODBC不支持动态记录集错误;

使用CRecordset::dynamic打开记录集,会出现ODBC不支持动态指针错误;

而用CRecordset::forwardOnly则出现无效的游标位置错误 。

你可能感兴趣的:(ODBC,MFC)