核心能力要求:精通存取技術、設計高效資料庫結構、管理與運行優化、SQL 語句優化。
| 技術 | 定位 | 優點 | 缺點/注意 |
|---|---|---|---|
| ODBC API | 底層 C/C++ 開發 | 速度最快、游標控制最靈活、支援所有綁定選項、跨平台 | 程式碼冗長、開發效率低、屬底層編程 |
| DAO | 早期 VB/Access | 物件模型優雅 | 所有呼叫經 Jet Engine,**嚴重瓶頸**,已淘汰 |
| OLE DB | COM 元件開發 | 統一介面存取關聯/非關聯源、健壯錯誤處理、支援非 SQL 資料 | COM 開發複雜、需懂介面指標、參考計數 |
| ADO | VB/ASP/VBScript 快速開發 | 易用、速度快、記憶體佔用小、二進位體積小 | 底層仍經 OLE DB,極高效能場景不如 ODBC/OCI |
| ADO.NET | .NET 應用 | 離線資料集架構、XML 整合、連線池自動管理 | 大量資料記憶體壓力大、需 .NET Framework |
| OTL (Oracle, Odbc, DB2-CLI Template Library) | C++ 現代跨平台 | 模板庫、編譯期類型安全、效率媲美 C API、部署輕量 (無 .NET/ADO 依賴) | 學習曲線較陡、文檔相對較少 |
| OCI (Oracle Call Interface) | Oracle 專用最高效能 | 完整功能、極致效能、支援所有進階特性 (物件、LOB、叢集等) | 專用鎖定、程式碼複雜、非跨資料庫 |
CDatabase::Open/Close/ExecuteSQL、CRecordset::Open/MoveNext/GetFieldValue。游標類型受限、高效能開發受限。CDataSource、CSession、CCommand/CTable、CAccessor (靜態/動態/手動) + CRowset。高效能 COM 開發首選。_ConnectionPtr/_RecordsetPtr/_CommandPtr,#import 產生 .tlh/.tli。快速開發、易維護。OCIEnvCreate、OCIServerAttach、OCIStmtPrepare/Execute/Fetch 完整流程。極致效能、進階功能 (物件導向、進階佇列、資料守護等)。| 類別 | 關鍵成員 | 用途 |
|---|---|---|
CDatabase | m_hdbc (連接句柄)、Open/Close/ExecuteSQL/BeginTrans/CommitTrans/Rollback | 管理資料源連接與交易 |
CRecordset | m_hstmt (Statement 句柄)、m_nFields、m_nParams、m_pDatabase、Open/MoveNext/GetFieldValue/Edit/Update/AddNew/Delete | 資料列集操作、欄位綁定 |
SELECT *、合理索引、優化 JOIN 順序、減少解析 (Cursor Sharing)。
是否 .NET 應用? → 是 → ADO.NET / Entity Framework
否
是否 C++ 跨平台高效能? → 是 → OTL (推薦) / ODBC API
否
是否 Oracle 專用極致效能? → 是 → OCI
否
是否 COM/VB6/ASP 經典應用? → 是 → ADO / OLE DB Templates
否
是否 MFC 桌面表單應用? → 是 → MFC ODBC
否 → 一般建議:ODBC API (通用) 或 ADO (快速原型)
Oracle 程式設計技術棧豐富,**沒有最好,只有最適合**。新專案首推 OTL (C++) 或 ADO.NET (.NET) 平衡效能與開發效率;維護舊系統按原技術棧延續;極致效能場景投入 OCI。無論選何技術,**SQL 與資料庫設計優化永遠是效能杠桿最大處**。