vc6 0使用DAO訪問access2000的問題

2021-04-16 20:20:13 字數 1234 閱讀 3324

感覺dao已經是一種比較舊的資料庫技術,但我的乙個同學還在使用vc6.0跟mfc的dao類來操作access2000,並遇到了乙個問題,就是程式執行時提示說「無法識別資料庫格式」。

查了一下原因,應該是這樣的:

vc6.0裡面的mfc預設使用的是dao3.5,而dao3.5使用的資料庫引擎是jet3.5,jet3.5操作access97是沒有問題的,而操作access2000卻不行,因為access2000使用的資料庫引擎是jet4.0,而jet3.5夠不上jet4.0,它識別不了access2000裡面的mdb。

dao3.6使用的資料庫引擎是jet4.0,所以,為了操作access2000或所有的access資料庫格式,可以考慮把mfc的dao公升級到3.6。

由於使用mfc有動態跟靜態兩種方式,所以這裡要考慮兩種公升級mfc dao的方法:

如果是使用動態鏈結mfc的方式,則只需要在程式執行初始化時(或在使用dao之前),把mfc dll給公升一下級即可---在程式中加上這一句:

afxgetmodulestate()->m_dwversion = 0x0601;   // 更新mfc為6.01版本

如果是使用靜態鏈結mfc的方式,由於使用的是lib而不是執行時的dll,所以上面的函式明顯不起作用。這時要考慮的是把mfc lib給公升級(而不是dll)。公升級mfc lib意味著修改原**並再新編譯。

首先,找到daocore.cpp檔案(原始檔都在mfc/src下),在檔案裡面這個地方:

// determine whether to use dao 3.6, 3.5, or 3.0

// use dao 3.0 if dll build and not built with mfc 4.21 or later

// use dao 3.6 if mfc 6.01 or later

// otherwise, dao 3.5

在其下面加上兩行:

#undef _mfc_ver

#define _mfc_ver 0x0601

至此修改原始檔結束。然後考慮編譯mfc原始檔,可以使用nmake工具,把mfc/src下面的所有cpp檔案編譯一遍,從而生成新的lib並自動拷貝到mfc/lib目錄下。具體做法就是,啟動cmd,轉到mfc/src目錄下,輸入nmake debug=1再回車即可以編譯出release版本的mfc lib。如果想要編譯出debug版的mfc lib,則輸入nmake debug=0。至此,mfc lib已經公升級,dao使用jet3.6,可以訪問所有access資料。問題解決。 

VC 6 0使用感想

進公司這兩三周,一直在使用vc 6.0,以前在學校的時候,很瞧不起這個整合開發環境,覺得它又土又不好用,對它嗤之以鼻。但是使用這段時間以來,真心覺得任何一款整合開發工具都有其存在的道理,都很博大精神,如果你稍不留神,就會被其中的陷阱繞進去。下面就介紹一下 我使用vc 6.0 時遇到的問題,以及犯下的...

VC 6 0的簡單使用

學習重點 學習內容 工欲善其事,必先利其器,所以學習編譯器的使用很重要,windows環境下的編譯器比較多,vc 6.0就是其中比較經典的一款,接下來我們將學習其簡單使用 確定所用電腦已安裝vc 6.0 1.開啟vc6.0,一般桌面有其圖示,直接開啟就可以了,如果沒有,就單擊開始 2.開啟vc,出現...

VC 6 0 配置和使用gdi

gdi 是windows xp中的乙個子系統,它主要負責在顯示螢幕和列印裝置輸出有關資訊,它是一組通過c 類實現的應用程式程式設計介面。顧名思義,gdi 是以前版本gdi的繼承者,出於相容性考慮,windows xp仍然支援以前版本的gdi,但是在開發新應用程式的時候,開發人員為了滿足圖形輸出需要應...