詳細配置C++藉助ADO連線Access資料庫
這是寫給你的。----2016-7-18
(本篇不會介紹連線原理,只介紹操作步驟入門)
1. 環境配置(Win8-Win10,64位)
2. 連線與測試程式碼
3. 意外情況解決方案
環境配置:
1. 先安裝你的Access資料庫(微軟Office 2016中含有或者單獨下載,下載地址:http://msdn.itellyou.cn/ 左側選擇應用程式一欄,注意選擇下載64位,即標有X64的)
特殊情況檢視意外解決方案 (A)
2. 安裝Microsoft Access database engine 2007,他的作用暫時可理解為我們所寫的程式與Access之間的溝通橋樑--“傳話人”。
Microsoft Access database engine 2010(可以安裝,但後面的程式碼是2007的,所以暫時建議使用2007)
下載地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=13255
Microsoft Access database engine 2007
下載地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=23734
特殊情況檢視意外解決方案 (C)
連線與測試程式碼:
本例程式碼使用VS2010以上版本測試
建議去文末下載寫好的含註釋的測試程式碼看。
1. 新建你的資料庫表
開啟Access
選擇空白資料庫,為你的資料庫中表項起一個名字 如 Test
設計你的儲存表格
本例附有測試表格database1.accdb
2.
在你程式的stdafx.h標頭檔案中加入
#import"C:/ProgramFiles/CommonFiles/System/ADO/msado15.dll"
rename("EOF","adoEOF"), rename("BOF","adoBOF")
(如果載入失敗的話,去c:\program files\common files\system\ado檢視是否有msado15.dll)
3.測試程式碼介紹
// LinkDBForHX.cpp : 定義控制檯應用程式的入口點。
#include "stdafx.h" #include<iostream>//atlstr #include<atlstr.h> using namespace ADODB; using namespace std; class AdoAccess { public: _ConnectionPtr HX_pConnection; // 資料庫指標 _RecordsetPtr HX_pRecordset; // 命令指標 _CommandPtr HX_pCommand; // 記錄指標 void OnInitADOConn() { ::CoInitialize(NULL); try { HX_pConnection.CreateInstance(__uuidof(Connection));//等價於 //HX_pConnection.CreateInstance("ADODB.Connection"); //此句包含定位你資料庫的所需的訪問資訊 _bstr_t strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database1.accdb;Persist Security Info=False "; //測試//_bstr_t strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database1.accdb;Persist Security Info=False";//此句包含定位你資料庫的所需的訪問資訊 //測試//_bstr_t strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Driver = { Microsoft Access Driver(*.mdb, *.accdb) }; DBQ =Database1.accdb;Persist Security Info=False "; //此句包含定位你資料庫的所需的訪問資訊 //連線master資料庫,無密碼。 HX_pConnection->Open(strConnect,"","",adModeUnknown); //連線資料庫 cout << "連線成功,並獲得智慧指標" << endl; } catch (_com_error e) { cout <<e.Description() << endl; } } void ExitConnect() { if (HX_pRecordset != NULL) HX_pRecordset->Close(); HX_pConnection->Close(); ::CoUninitialize(); } }; int main() { AdoAccess dataBase; //初始化 dataBase.OnInitADOConn(); dataBase.HX_pRecordset.CreateInstance("ADODB.Recordset"); //選擇名為Test的表格 dataBase.HX_pRecordset->Open("select * from Test", dataBase.HX_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); int i = 0; //讀取其中的name欄位所有資料,並顯示 while (!dataBase.HX_pRecordset->adoEOF) { _variant_t var; string strValue; var = dataBase.HX_pRecordset->GetCollect("name"); //其他類似,都是通過HX_pRecordset傳遞SQL語句執行查詢、新增、刪除等命令 if (var.vt != VT_NULL) strValue = _com_util::ConvertBSTRToString((_bstr_t)var); ++i; cout << "name " << i << " " << strValue << endl;; dataBase.HX_pRecordset->MoveNext(); } //解除安裝com元件 dataBase.ExitConnect(); int xxxx = 0; cout << "輸入數字結束\n"; cin >> xxxx; return 0; }
意外情況解決方案
A 描述:未在本地計算機上註冊“microsoft.ACE.oledb.12.0”提供程式。
請正確安裝環境配置中的第一步
B 若A無法解決問題。
選擇 該應用程式的 應用程式池 ------>選擇高階設定--------->啟用32位應用程式 ------->true
操作如下:
按下win + R
在彈出的對話方塊中輸入inetmgr,然後按回車鍵
選擇最左側
點選應用程式池
再點選下圖的DefaultAPPPool
選擇高階設定
選擇啟用32位應用程式 ---置為True.
最後選擇確認儲存
C 重新安裝 Microsoft Access databaseengine 2007
D 程式若提示缺少符號集,請下載相關符號集或者在聯網狀態下動態載入
E問
示例專案下載地址:
http://download.csdn.net/detail/hffhjh111/9866831