首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

ADO 封裝類 CadoInterface:MFC 專用簡化資料庫操作

     編輯:關於VC++

設計目標

針對 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)
執行 SQLmyado.Execute("Delete from file where AGE=36");
讀取欄位_variant_t v; myado.GetCollect("NAME", v); CString name = v;
刪除當前記錄myado.Delet();

三、增值操作

3.1 追加記錄 (結構體陣列)

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);

3.2 追加記錄 (可變參數擴展版)

myado.AddNewRecodeEx2("FF,NAME,小數,NUM,AGE,TIME",
    -2.17, "查林傑", 3.1415927, 10, -18, "1995/6/9");

第一參數:欄位名以逗號分隔字串;後續參數依序對應值。

3.3 讀取單筆記錄 (陣列版)

_variant_t ColName[5] = {"ID","NAME","AGE","TIME","HF"};
_variant_t OutValue[5];
myado.GetOneRecord(ColName, 5, OutValue);

3.4 讀取單筆記錄 (可變參數擴展版)

long la,lb; double da,db; CString s1,s2;
myado.GetOneRecordEx2("FF,NAME,小數,NUM,AGE,TIME", &da, &s1, &db, &la, &lb, &s2);

3.5 查找與過濾

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; };

五、專案整合步驟

  1. stdafx.h 匯入 msado15.dll:#import "msado15.dll" no_namespace rename("EOF","adoEOF")
  2. 專案屬性 → 「Managed COM」或手動 CoInitialize/CoUninitialize。
  3. 將 AdoInterface.h/.cpp、DataBelong.h 加入專案,包含 AdoInterface.h。

六、結語

可依需求擴充或改為 COM 元件進一步解耦。範例以 VS.NET 2003 編譯,Win2000 測試通過。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved