針對 MFC 專案,封裝 ADO 常用操作,消除重複的 try-catch、連線/開啟/讀寫樣板碼,提供直觀介面。僅需包含 AdoInterface.h 即可使用。
AdoInterface 包含 DataBelong (支援結構/演算法),使用者僅依賴介面檔。見原文圖片。
| 操作 | 範例代碼 |
|---|---|
| 連接資料庫 | myado.ConnecDataLibrary("provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb", "", ""); |
| 開啟記錄集 | myado.OpenSheet("select * from file"); (枚舉參數有預設值) |
| 關閉記錄集/連線 | myado.CloseSheet(); myado.CloseDataLibrary(); |
| 取得原生指標 | myado.GetConnPtr(); myado.GetRecoPtr(); 進階需求直接呼叫 ADO |
| 游標狀態 | myado.BOF(); myado.adoEOF(); |
| 游標移動 | MoveFirst/Last/Next/Previous/Move(long) |
| 執行 SQL | myado.Execute("Delete from file where AGE=36"); |
| 讀取欄位 | _variant_t v; myado.GetCollect("NAME", v); CString name = v; |
| 刪除當前記錄 | myado.Delet(); |
AddNewCode insert[3];
insert[0].ColName="NAME"; insert[0].Value="插入一條新記錄";
insert[1].ColName="AGE"; insert[1].Value=18;
insert[2].ColName="TIME"; insert[2].Value="1999/9/9";
myado.AddNewRecode(insert, 3);
myado.AddNewRecodeEx2("FF,NAME,小數,NUM,AGE,TIME",
-2.17, "查林傑", 3.1415927, 10, -18, "1995/6/9");
第一參數:欄位名以逗號分隔字串;後續參數依序對應值。
_variant_t ColName[5] = {"ID","NAME","AGE","TIME","HF"};
_variant_t OutValue[5];
myado.GetOneRecord(ColName, 5, OutValue);
long la,lb; double da,db; CString s1,s2;
myado.GetOneRecordEx2("FF,NAME,小數,NUM,AGE,TIME", &da, &s1, &db, &la, &lb, &s2);
myado.Find("AGE=47");
while (myado.FindNext()) { ... }
myado.Filter("AGE>25");
Ufo(CString, vector<CString>&):解析欄位名字串填入向量。GetNameandType(CString, vector<_variant_t>&):同時解析欄位名與型別。struct AddNewCode { _variant_t ColName, Value; };struct FieldInfor { _bstr_t Name; DataTypeEnum Type; };stdafx.h 匯入 msado15.dll:#import "msado15.dll" no_namespace rename("EOF","adoEOF")CoInitialize/CoUninitialize。AdoInterface.h/.cpp、DataBelong.h 加入專案,包含 AdoInterface.h。可依需求擴充或改為 COM 元件進一步解耦。範例以 VS.NET 2003 編譯,Win2000 測試通過。