如何進行ADO連接ACCESS相關(guān)操作
***進行ADO連接ACCESS時會出現(xiàn)相關(guān)提示,把LPCSTR類型的字符串自動轉(zhuǎn)換為CString。 除***步外,其余代碼均添加在OnInitDialog()中,在網(wǎng)上找了很多資料,但因資料繁雜,版本很多,且連接方法有很多種,所以看著不方便,。#t#
新建一個對話框應(yīng)用程序,建一個ACESS數(shù)據(jù)庫命名為Demo.mdb,數(shù)據(jù)表名為Demo Table,數(shù)據(jù)表中記錄的字段值分別為Name,Age..將此數(shù)據(jù)庫放入剛才建的應(yīng)用程序文件夾下。
1.在stdafx.h中加入
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2.在OnInitDialog()中初始化COM.
AfxOleInit();
3.創(chuàng)建Connection對象并連接數(shù)據(jù)庫
首先聲明一個_ConnectionPtr接口對象
_ConnectionPtr m_pConnection;
下面創(chuàng)建Connection對象實例及如何連接數(shù)據(jù)庫并進行異常捕捉。
- m_pConnection.CreateInstance(__uuidof(Connection));
- try
- {
- // 打開本地Access庫Demo.mdb
- m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb","","",adModeUnknown);
- }
- catch(_com_error e)
- {
- AfxMessageBox("數(shù)據(jù)庫連接失敗,確認數(shù)據(jù)庫Demo.mdb是否在當前路徑下!");
- return FALSE;
- }
4.利用_RecordsetPtr智能指針,來打開庫內(nèi)數(shù)據(jù)表,并對表內(nèi)的記錄、字段等進行各種操作。
- RecordsetPtr m_pRecordset;
- m_pRecordset.CreateInstance(__uuidof(Recordset));
- try
- {
- m_pRecordset->Open("SELECT * FROM DemoTable", // 查詢DemoTable表中所有字段
- m_pConnection.GetInterfacePtr(), // 獲取庫接庫的IDispatch指針
- adOpenDynamic,
- adLockOptimistic,
- adCmdText);
- }
- catch(_com_error *e)
- {
- AfxMessageBox(e->ErrorMessage());
- }
5.讀取表內(nèi)數(shù)據(jù)。將表內(nèi)數(shù)據(jù)讀出并顯示在編輯框中.
首先在對話框上添加兩個EDIT控件并添加變量m_name,m_age;添加代碼如下:
- variant_t var; //_variant_t是一種通用數(shù)據(jù)類型,里面可以放不同類型的數(shù)據(jù)。
- var = m_pRecordset->GetCollect("Name");
- if(var.vt != VT_NULL)
- m_name = (LPCSTR)_bstr_t(var);
- var = m_pRecordset->GetCollect("Age");
- if(var.vt != VT_NULL)
- m_age = (LPCSTR)_bstr_t(var);
- UpdateData(false);