ADO (ActiveX Data Objects) 是微軟提供的通用資料存取介面,屬標準 COM 物件,Delphi 可透過 CreateOleObject 直接使用,無需安裝 BDE,極適合 Web/ISAPI/CGI 等輕量部署場景。本文系統整理 ADO 兩大核心物件——Connection 與 Recordset——的建立方式、關鍵屬性方法、參數說明,並對照 Delphi 原生 BDE 物件,幫助開發者快速上手。
對應 Delphi TDatabase。
var AConn: Variant;
AConn := CreateOleObject('ADODB.Connection');
AConn.Open(ConnectionString, UserID, Password);
Provider=MSDASQL;DSN=MyDsn;UID=sa;PWD=secret;
// 或無 DSN 直連(推薦,避免 DSN 被竄改):
Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Data\Test.mdb
Driver={SQL Server};SERVER=MyServer;DATABASE=MyDB;UID=sa;PWD=secret
| 參數 | 說明 | 必要性 |
|---|---|---|
| Provider | 資料提供者,預設 MSDASQL (OLE DB for ODBC) | 可省略 |
| DSN | 系統 DSN 名稱 | 二選一 |
| DRIVER | ODBC 驅動程式名稱(無 DSN 時必填) | 二選一 |
| SERVER | 資料庫伺服器名稱,本機用 (local) | 視情況 |
| DATABASE | 資料庫名稱 | 視情況 |
| UID/PWD | 登入帳號密碼 | 視情況 |
AConn.Execute('DELETE FROM wfjcommu WHERE ID > 100');
AConn.Close;
對應 Delphi TTable/TQuery。
var ARec: Variant;
ARec := CreateOleObject('ADODB.Recordset');
ARec.Open(Source, ActiveConnection, CursorType, LockType, CommandType);
| 參數 | 說明 | 範例值 |
|---|---|---|
| Source | 命令:資料表名、SQL 陳述式、預存程序名 | 'wfjcommu' / 'SELECT * FROM wfjcommu' |
| ActiveConnection | ADODB.Connection 物件或連接字串 | AConn / 'DSN=MyDsn' |
| CursorType | 游標類型(參見常數表) | adOpenStatic (3) |
| LockType | 鎖定類型(參見常數表) | adLockOptimistic (3) |
| CommandType | Source 類型:adCmdText(1)/adCmdTable(2)/adCmdStoredProc(4) | adCmdText |
| 功能 | ADO | Delphi BDE |
|---|---|---|
| 檢查 EOF/BOF | EOF / BOF | EOF / BOF |
| 移動首/尾筆 | MoveFirst / MoveLast | First / Last |
| 移動上/下筆 | MovePrevious / MoveNext | Prior / Next |
| 相對移動 | Move(Rows) | MoveBy(Distance) |
| 新增記錄 | AddNew | Append |
| 確認更新 | Update (所有異動必須呼叫) | Post |
| 刪除記錄 | Delete → Update | Delete (立即) |
| 關閉 | Close | Close |
| 依索引存取欄位 | Fields[Index] | Fields[Index] |
| 依名稱存取欄位 | Fields['Name'] | FieldByName('Name') |
| ADO 物件 | 對應 Delphi 類別 | 備註 |
|---|---|---|
| ADODB.Field | TField | |
| ADODB.Parameter | TParam | Command 物件用 |
| ADODB.Error | EDBEngineError | 錯誤集合在 Connection.Errors |
| ADODB.Command | 無直接對應 | 參數化查詢、預存程序必備 |
| ADODB.Property | 無 | 動態屬性集合 |
try...except on E: EOleException do ... 捕捉 COM 錯誤碼。掌握 Connection 與 Recordset 兩大核心,即可在 Delphi 開發無 BDE 相依的資料庫應用,下一篇將呈現完整 CRUD 實戰代碼。