承接先前發表的《使用 ADO 封裝類的資料庫程式開發實例》,作者根據網友回饋與自身經驗,重構了封裝類,功能更完整:涵蓋 ADO 元件大部分方法,並擴充常用功能——如檔案/圖片寫入資料庫、讀取點陣圖欄位、Variant 智慧型別轉換等。雖然 Command 類別測試尚未完備,但 Connection 與 Recordset 核心類別已在 Access、SQL Server、MySQL 等環境下通過測試(MySQL 不支援交易)。
CAdoConnectionCAdoConnection(); // 建構函式
BOOL Open(LPCTSTR lpszConnect, long lOptions); // 通用連線
BOOL ConnectSQLServer(CString dbsrv, CString db, CString usr, CString pwd, long lOpt);
BOOL ConnectAccess(CString path, CString pwd, long lOpt);
BOOL OpenUDLFile(LPCTSTR strFile, long lOpt); // 透過 .udl 檔連線
// SQL Server
CString strConn = "Provider=SQLOLEDB.1;Persist Security Info=False;"
"Integrated Security=SSPI;Data Source=cz\\xyy;Initial Catalog=NoteBook;";
pAdoConnection.Open(strConn);
// 或簡化版
pAdoConnection.ConnectSQLServer("cz\\xyy", "NoteBook", "sa", "007");
// Access
CString strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\dbTest.mdb";
pAdoConnection.Open(strConn);
// 或簡化版
pAdoConnection.ConnectAccess("C:\\dbTest.mdb", "007");
| 方法/屬性 | 說明 |
|---|---|
Close() | 關閉連線、釋放資源 |
Execute(LPCTSTR sql, long opt) | 執行不需傳回記錄集的 SQL(如 DELETE、UPDATE) |
Cancel() | 取消執行中操作 |
GetLastErrorText() | 取得最後錯誤訊息 |
IsOpen() | 檢查連線狀態 |
Set/GetConnectTimeOut() | 設定/取得連線逾時 |
GetProviderName() | 取得提供者名稱 |
GetVersion() | 取得 ADO 版本 |
GetState() | 傳回 adStateOpen/adStateClosed |
Set/GetMode() | 存取模式(唯讀、讀寫、共享模式等) |
OpenSchema(SchemaEnum) | 取得資料庫結構描述資訊(資料表、欄位、索引等) |
BeginTrans() / CommitTrans() / RollbackTrans() | 交易控制,支援巢狀交易 |
COleDateTime vartodate(const _variant_t&);
COleCurrency vartocy(const _variant_t&);
bool vartobool(const _variant_t&);
BYTE vartoby(const _variant_t&);
short vartoi(const _variant_t&);
long vartol(const _variant_t&);
double vartof(const _variant_t&);
CString vartostr(const _variant_t&);
SetFilter、SetSort、Find、書籤——減少手寫 SQL。下篇將詳細說明 CAdoRecordSet、CAdoCommand 類別完整介面與範例。