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


1191

被折叠的 条评论
为什么被折叠?



