有关MFC ODBC类对打开的CRecordset数据集无法进行更新操作释疑

在使用MFC的CDatabase和CRecordset类处理ODBC数据时,遇到无法编辑、添加和删除数据的问题。尽管数据库和数据集能正常打开,但总是提示“记录集只读”。经过调试发现,问题出在SQL语句中的"FROM"关键字前后必须有空格,否则MFC的内部检查将导致数据集变为只读。此外,包含"GROUP BY"子句或多表查询的数据集也无法进行更新操作。解决这个问题需要确保SQL语句格式正确。

         在用MFC数据库类CDatabase和CRecordset类声明的对像无法对打开的数据集进行编辑、添加、删除。偶然间让我碰到个这样的问题让我费了不少精神,不知道为什么数据库能正常打开,数据集也正常Open。可是就是没办法进入编辑状态,老是会弹出“记录集只读”的提示。
------------------------------------------------------------------------------------------------------------------------------
 CDatabase db;
 db.OpenEx (_T"DSN=strtab");
 CRecordset m_Set (&db);
 m_Set.Open (AFX_DB_USE_DEFAULT_TYPE, _T"select *from strtab");
 if (!m_Set.IsOpen ()) AfxMessageBox ("数据集没能打开!");
 m_Set.Edit ();
--------------------------------------------------------------------------------------------------------------------------------
         检查一下自己的程序,发现不管是声明的CDatabase对像还是通过CRecordset对像打开的记录集都使用的是缺省参数,而在我的记忆中CDatabase::OpenEx()和CRecordset::Open()这两个成员函数的缺省参数打开的记录集和数据库对像都是非只读的。倒底是那里的问题呢?
BOOL CDatabase::OpenEx(LPCTSTR lpszConnectString, DWORD dwOptions)
vi

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值