在VC2010下使用資料記錄集修改資料表出現系統崩潰問題的解決(m_pSet->AddNew()等函式)
VC6.0用m_pSet->AddNew()是好好的,在VS2012卻出現系統崩潰,彈出來:
在除錯視窗中提示:
Warning: Driver does not support requested concurrency.
Warning: Setting recordset read only.
Debug Assertion Failed!
Program: D:\MFCDemos\í?è′VS2012°?\StudSco1\.\Debug\StudSco.exe
File: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\dbcore.cpp
Line: 64
其中關鍵的一行資訊:“記錄集為只讀”。
造成這一問題的原因在於開啟資料記錄集的方式,在VC6.0中可以直接選擇預設方式,即:
m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)
但在VS2010以上版本中(筆者使用的是VS2012,其他版本未測試),應該將預設方式改為動態記錄集方式,即:
m_pSet->Open(CRecordset::dynaset,strSQL)
究其根源,在於CRecordset的Open函式的用法根據引數的不同有不同的結果,具體用法參看下文
CRecordset::Open
virtual BOOL Open( UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, DWORD dwOptions = none );
throw( CDBException, CMemoryException );
Return Value
Nonzero if the CRecordset object was successfully opened; otherwise 0 if CDatabase::Open (if called) returns 0.
Parameters
nOpenType
Accept the default value, AFX_DB_USE_DEFAULT_TYPE, or use one of the following values from the enum OpenType:
CRecordset::dynaset A recordset with bi-directional scrolling. The membership and ordering of the records are determined when the recordset is opened, but changes made by other users to the data values are visible following a fetch operation. Dynasets are also known as keyset-driven recordsets.
CRecordset::snapshot A static recordset with bi-directional scrolling. The membership and ordering of the records are determined when the recordset is opened; the data values are determined when the records are fetched. Changes made by other users are not visible until the recordset is closed and then reopened.
CRecordset::dynamic A recordset with bi-directional scrolling. Changes made by other users to the membership, ordering, and data values are visible following a fetch operation. Note that many ODBC drivers do not support this type of recordset.
CRecordset::forwardOnly A read-only recordset with only forward scrolling.
For CRecordset, the default value is CRecordset::snapshot. The default-value mechanism allows the Visual C++ wizards to interact with both ODBC CRecordset and DAO CDaoRecordset, which have different defaults.
For more information about these recordset types, see the articleRecordset (ODBC) in Visual C++ Programmer’s Guide. For related information, see the article ”Using Block and Scrollable Cursors" in the ODBC SDK Programmer's Reference.
Caution If the requested type is not supported, the framework throws an exception.
相關文章
- 記錄一次解決App崩潰問題的解決方案APP
- AI|經常崩潰的問題解決AI
- 解決Linux系統下MYSQL資料表大小寫敏感問題LinuxMySql
- 高併發下資料冪等問題的9種解決方案
- 線上Redis-Docker叢集出現物理機崩潰的一次問題記錄RedisDocker
- SSM解決中文存入資料庫亂碼問題(記錄自己的問題)SSM資料庫
- 簡單幾步解決win10系統詳細資訊窗格資源管理器崩潰的問題Win10
- 使用SQL以及函式等做資料分析SQL函式
- win10系統在資源管理器中剪下檔案出現崩潰怎麼解決Win10
- 伺服器資料恢復—VMware下誤重灌系統導致伺服器崩潰的資料恢復案例伺服器資料恢復
- IBM X3850伺服器崩潰資料恢復過程記錄IBM伺服器資料恢復
- Oracle修改字符集前如何找出可能出現問題的資料?Oracle
- OXS系統下Python input()函式在Sublime Text 無法互動問題解決方案Python函式
- 解決hive資料庫 插入資料很慢的問題Hive資料庫
- 修復netty-codec-http:4.1.30解析application/json資料在Windows系統奔潰的問題NettyHTTPAPPJSONWindows
- 解決AI的小資料問題AI
- 【伺服器資料恢復】REISERFS檔案系統RAID5崩潰的資料恢復案例伺服器資料恢復AI
- GBase XDM(單機/分片叢集)資料庫修改記錄資料庫
- 如何使用Wondershare Recoverit for Mac從崩潰的 Mac 恢復資料?Mac
- 程式採集裝置資料,不穩定,突然不採集, 程式崩潰
- MySQL 資料庫崩潰(crash)的常見原因和解決辦法MySql資料庫
- 使用 Intellij IDEA 解決 Java 8 的資料流問題IntelliJIdeaJava
- 【虹科乾貨】使用記憶體資料庫解決三個資料庫效能問題記憶體資料庫
- 解決Mysql資料庫插入資料出現問號(?)的解決辦法MySql資料庫
- 解決Vue在scoped模式下修改el-collaspe樣式失效的問題Vue模式
- 讀資料質量管理:資料可靠性與資料質量問題解決之道03資料目錄
- 大資料採集:fillna函式大資料函式
- scikit-learn 中 Boston Housing 資料集問題解決方案
- 記在Linux上定位後臺服務偶發崩潰的問題Linux
- win10系統下AMD驅動程式崩潰了怎麼解決Win10
- 使用Kettle抽取資料時,出現中文亂碼問題解決方案
- 解決linux下redis資料庫overcommit_memory問題LinuxRedis資料庫MIT
- 某品牌儲存raid崩潰解決方案/raid5資料恢復案例AI資料恢復
- 儲存崩潰資料恢復過程;資料恢復案例資料恢復
- Win10系統下WindowsApps資料夾拒絕訪問的解決方法Win10WindowsAPP
- win10系統下共享資料夾無法訪問的解決方法Win10
- 帶你瞭解分散式系統的資料一致性問題分散式
- k8s克隆節點引起的系統崩潰問題K8S