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

VC++ 五大資料庫開發技術深度對比:ODBC、DAO、OLE DB、ADO 該怎麼選?

     編輯:關於VC++

概述

從簡單的 Jet Engine 到大型 Oracle 系統,VC++ 6.0 提供多種資料庫程式介面。本文對比五種主流技術:

  1. ODBC API
  2. MFC ODBC 類別
  3. MFC DAO 類別(資料存取物件)
  4. MFC OLE DB
  5. ActiveX 資料物件(ADO)

1. ODBC API:底層通用介面

提供通用程式介面,支援 Oracle、SQL Server、Excel 等多種資料庫,可直接用 SQL 陳述式進行底層操作。需引入 sql.h、sqlext.h、sqltypes.h。

基本步驟:

  1. 配置 ODBC 環境(SQLHENV 控制代碼)
  2. 為每個資料來源配置連線控制代碼(SQLAllocHandle)
  3. 連接資料庫(SQLConnect,可先用 SQLSetConnectAttr 設定屬性)
  4. 執行 SQL 陳述式操作
  5. 取回結果,斷開連接
  6. 釋放 ODBC 環境

特點:功能強大豐富(非同步操作、交易處理),但程式複雜、工作量大。

2. MFC ODBC 類別:最廣泛採用的封裝

MFC 1.5+ 封裝 ODBC 功能,免去繁雜 API 呼叫。主要類別:

  • CDatabase:代表資料來源連線。構造後呼叫 OpenEx() 開啟,配合 CRecordset 操作。交易處理時關鍵(BeginTrans/CommitTrans/Rollback)。
  • CRecordset:代表記錄集合。兩種形式:snapshot(靜態檢視)與 dynaset(與其他使用者更新同步)。支援記錄的新增、刪除、修改、查詢。
  • CRecordView:資料庫記錄的格式化視圖,直接連結 CRecordset,從對話方塊模板建立,利用 DDX/RFX 機制自動化控制項與欄位資料移動,甚至無需寫代碼即可實現簡單查看程式。
  • CDBException:異常類別,含 m_nRetCode (ODBC 回傳碼)、m_strError (錯誤描述)、m_strStateNativeOrigin (ODBC 錯誤碼描述)。所有資料庫操作函式皆可拋出此異常,捕捉異常是正確做法。

實際開發中應用最廣,功能豐富且操作相對簡便。

3. MFC DAO:專為 Access 設計

DAO(Data Access Objects)用於介接 Microsoft Access。若僅需與 Access 介接,DAO 較方便。主要類別對應 ODBC 版:CDaoWorkspace、CDaoDatabase、CDaoRecordset、CDaoRecordView、CDaoException,另加 CDaoTableDef(資料表定義)、CDaoQueryDef(查詢定義)、CDaoFieldExchange(DFX 機制)。同樣支援交易處理。應用範圍固定於 Access。

4. OLE DB:COM 架構的靈活資料存取

在資料提供者與消費者間提供靈活的 COM 介面,但靈活有時增加複雜度。定義三大基本角色:

  • 資料提供者:擁有資料並以表格形式公開,實作 OLE DB Rowset COM 介面,範圍從簡單單一表格到複雜分散式資料庫。
  • 消費者:使用 OLE DB 介面存取提供者資料的應用程式。
  • 服務提供者:無自有資料,但作為消費者存取提供者資料,再公開給其他消費者,常用於高階分散式查詢等服務。

程式設計使用 COM 元件:列舉器、資料來源、工作階段、交易、命令、錯誤物件等。操作相對複雜。

5. ADO:簡潔易用的高階介面

微軟提供的面向物件介面,基於 OLE DB 但更簡單,擁有更豐富特性與更高靈活性。基於 COM,支援 VB、VJ++ 等多種開發工具,在伺服器應用(特別是 ASP)極具優勢。

ADO 物件結構類似 OLE DB 但不依賴物件層級,多數情況只需建立並使用所需物件。核心物件:

  • Connection:資料庫連線、命令與交易處理
  • Command:傳送給資料來源的命令
  • Recordset:資料表格集,取得與修改資料
  • Field:記錄集欄位資訊
  • Parameter:命令參數雙向傳輸資料
  • Property:操作其他物件屬性
  • Error:詳細錯誤資訊

VC++ 使用 ADO 需進行 COM 操作(此處不贅述)。

結語

在當今分散式開發環境下,VC++ 6.0 資料庫開發優勢明顯。學會在不同場合選用不同技術,是開發人員必備技能:

  • 需底層控制、跨資料庫平台 → ODBC API / MFC ODBC
  • 專攻 Access → MFC DAO
  • COM 架構、分散式、高階服務 → OLE DB
  • 快速開發、ASP、多語言支援 → ADO
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved