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

本文讨论了在MFCODBC环境中遇到的问题,重点在于如何正确使用Open函数来打开记录集,详细解释了不同参数选择的影响,并提供了解决特定问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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则出现无效的游标位置错误 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值