x64 win64編譯環境下ADO連接Access數據庫的問題解決

原文連接地址:https://blog.csdn.net/HW140701/article/details/71077579html

Win32編譯環境下,用ADO數據庫鏈接Access數據庫通常都不會報錯,可是最近因爲項目上的須要,程序須要編譯成64位以便申請到更多的使用內存空間,當把編譯方式從Win32改成x64的時候,忽然出現了數據庫鏈接出現未知錯誤,這時候就猜到了應該是編譯環境的改變致使了數據庫鏈接出錯,在參考了其餘大神的解決方案以後,終於解決了這個問題,個人環境爲Win7 64+MFC(VS2010)+ADO+Access2007。數據庫

    參考連接以下:編程

    http://blog.csdn.net/sundacheng1989/article/details/17925431ide

    http://www.cnblogs.com/bluedoctor/p/3925871.htmlui

    http://blog.csdn.net/kirawoo/article/details/39032387spa

    http://blog.csdn.net/u010891996/article/details/12522911.net

 

解決方法:命令行

步驟1:去官網下載AccessDatabaseEngine_64.exe,下載連接code

https://www.microsoft.com/zh-cn/download/details.aspx?id=13255orm

或者直接去個人下載頻道進行下載

http://download.csdn.net/detail/hw140701/9830665

驟2:這一個步驟是強制安裝剛剛下載的AccessDatabaseEngine_64.exe,若是不強制安裝的話,它會要求你卸載你所安裝的所有的Office軟件,那多麻煩!!!,因此選擇忽略提醒,強制安裝,

打開cmd.exe,在命令行輸入「你的AccessDatabaseEngine_64.exe的存放路徑」 /passive,好比個人就是"F:\軟件\我下載的\Windows數據庫編程\AccessDatabaseEngine_64.exe" /passive強制安裝,輸完這個命令就等待安裝完成。

步驟3:在安裝完上述引擎以後,你須要修改一下你的代碼,在win32編譯環境下咱們的數據庫的連接字符串是

m_connection.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",databaseName);

若是你須要在x64的編譯環境環境下鏈接Access數據庫你須要修改成

m_connection.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s",databaseName);

爲了更好的適配不一樣的編譯環境,我將個人代碼修改成

 1 //初始化COM,建立ADO鏈接對象實例 
 2     getsample_pConnection.CreateInstance(__uuidof(Connection));
 3     getsample_pRecordset.CreateInstance(__uuidof(Recordset));
 4     //構造數據庫鏈接字符
 5     CString m_connection;
 6     #if defined _WIN64//若是是64位程序
 7     m_connection.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s",databaseName);
 8     #elif defined _WIN32//若是是32位程序
 9     m_connection.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",databaseName);
10     #endif
11     
12     try
13     {    
14         //使用Open方法鏈接數據庫
15         getsample_pConnection->Open(_bstr_t(m_connection),"","",adModeUnknown);
16         //如下兩行用來設置狀態欄的提示信息 
17     }
18     catch(_com_error e)//捕捉數據庫打開過程當中的錯誤信息
19     {
20         
21         CString tempErrorMessage;
22         tempErrorMessage.Format("數據庫鏈接失敗,錯誤緣由爲:%s",e.ErrorMessage());
23         AfxMessageBox(tempErrorMessage)
24     }

當是64位程序的時候就爲
m_connection.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s",databaseName);

當是32位程序的時候就爲

m_connection.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",databaseName);

 

而後重啓一下PC,應該就能夠編譯成功了。

相關文章
相關標籤/搜索