最近專案需要使用到資料庫,專案本身使用的是mfc。於是選擇了簡單的access資料,本文將介紹本人如何在mfc使用的access資料庫。順帶提一句,本文使用的系統為win8.1,64位,編譯環境為vs2010和office2010,如出現連線問題,可以看看access的位數與系統位數是否一致。
本文是在ado(microsoft active data objects)介面下對資料庫進行操作的。ado封裝了oledb所提供的介面,使用者能通過oledb訪問和運算元據庫伺服器中的資料。ado易於使用,速度快,廣泛應用於關聯式資料庫、非關聯式資料庫、電子郵件、檔案系統等。
本文使用的是使用ado物件的方法連線資料庫,ado物件包含連線(connection)、命令(command)、記錄集(recordset)、引數(parameter)等物件。
連線物件用於連線資料來源,以及處理一些命令和事物。在使用ado訪問資料庫之前,必須先建立乙個connection物件,然後通過它開啟與資料庫的連線。
命令物件用於執行傳遞給資料來源的命令。
記錄集物件可操作來自資料來源的資料,通過recordset物件可對幾乎所有的資料進行操作。所有的recordset物件均使用記錄(行)和字段(列)進行構造。
引數物件代表引數或基於引數化的command物件的引數資訊。需要進行的操作在這些命令中只定義一次,但可以使用引數改變命令的細節。
1. 新建資料庫
本文使用adox來新建資料庫。adox是核心ado物件的擴充套件庫。它提供的附加物件可用於建立、修改和刪除模式物件,如表和過程。使用adox需要新增引用
#import "c:/program files/common files/system/ado/msadox.dll" rename_namespace("adox")
建立資料庫時檢查該資料庫是否已經存在,如果該資料庫已經存在,則return。
介紹乙個檢查檔案路徑是否存在的api函式,pathfileexists()。注意新增標頭檔案
//使用api函式pathfileexists()檢查路徑檔案是否存在
#include "shlwapi.h"
#pragma comment(lib,"shlwapi.lib")
cstring m_accessname;
m_accessname = "..\\users.accdb";//access資料庫路徑及名字
if(pathfileexists(m_accessname))
adox屬於com物件,需要對com進行初始化。
if(!afxoleinit())//這就是mfc初始化com庫
建立access資料庫:
新建乙個catalog物件,然後呼叫它的create方法就可以了。
catalog是 adox 的乙個物件,它包含描述資料來源模式目錄的集合。
注意:用try...catch組合捕捉錯誤
adox::_catalogptr m_pcatalog = null;
cstring dbname="provider=microsoft.jet.oledb.4.0; data source=";
dbname=dbname+m_accessname;
trycatch(_com_error &e)
2. 連線資料庫
連線資料庫時,需要使用connection物件的open方法開啟與資料來源的連線。使用ado時需要引用支援ado元件的型別庫:
#import "c:/program files/common files/system/ado/msado15.dll" rename_namespace("ado20") rename("eof","adoeof") rename("bof","adobof")
using namespace ado20;
在標頭檔案中為類新增成員變數
//新增乙個指向connection物件的指標
_connectionptr m_pconnection;//智慧型指標,無需釋放
//新增乙個指向recordset物件的指標
_recordsetptr m_precordset;
初始化ado connection recordset物件
hresult hr;
try}
catch(_com_error e)///捕捉異常
關閉記錄集和連線
void exitconnect()
3. 在資料庫中新建表(有時間待續)
4. 獲取記錄集資料
5. 遍歷記錄集
6. 向記錄集中新增資料(在最後一行新增資料)
7. 修改記錄集資料
8. 刪除記錄集資料
9. 查詢記錄集中資料
ado讀取資料庫
當我們在使用ado運算元據庫的時候經常會碰到一些問題!例如資料庫為空我們就應該對是否為空做出判斷!variant t var var bstr t m precordset getcollect z controllersn if var.vt vt null else m list.setitem...
ADO 訪問資料庫
using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using system.window...
ADO資料庫示例
stdafx.h import c program files common files system ado msado15.dll no namespace rename eof nul adodlg.cpp coinitialize null connectionptr spconn uuid...