OLE DB 提供者樣板 (C++)

OLE DB 是通用數據存取策略Microsoft的重要組成部分。 OLE DB 設計允許從任何數據來源存取高效能數據。 無論表格式數據是否來自資料庫,都能透過 OLE DB 檢視。 彈性提供您巨大的力量。

如 OLE DB 消費者和提供者中所述,OLE DB 會使用取用者和提供者的概念。 取用者提出數據要求;提供者會將表格式格式的數據傳回給取用者。 從程式設計的觀點來看,此模型最重要的含意是提供者必須實作取用者可以進行的任何呼叫。

什麼是提供者?

OLE DB 提供者是一組 COM 物件,可提供取用者物件的介面呼叫,並將表格式中的數據從長期來源(稱為數據存放區)傳送給取用者。

提供者可以是簡單或複雜的。 提供者可以藉由實作更多介面來支援最少的功能或完整生產品質提供者。 提供者可以傳回數據表、允許客戶端判斷該數據表的格式,以及在該數據上執行作業。

每個提供者都會實作一組標準 COM 對象來處理來自用戶端的要求,標準表示任何 OLE DB 取用者都可以從任何提供者存取數據,而不論語言為何(例如 C++ 和 Basic)。

每個 COM 物件都包含數個介面,其中有些是必要介面,有些是選擇性的。 藉由實作強制介面,提供者會保證任何用戶端都應該能夠使用的最低功能層級(稱為合規性)。 提供者可以實作選擇性介面來提供其他功能。 OLE DB 提供者範本架構會詳細說明這些介面。 客戶端應該一律呼叫 QueryInterface 來判斷提供者是否支援指定的介面。

OLE DB 規格層級支援

OLE DB 提供者範本支援 OLE DB 2.7 版規格。 使用 OLE DB 提供者範本,您可以實作層級 0 相容提供者。 例如,此 Provider 範例會使用範本來實作執行 DOS DIR 命令以查詢檔案系統的非 SQL (MS-DOS) 命令伺服器。 此 Provider 範例會傳回數據列集中的目錄資訊,這是傳回表格式數據的標準 OLE DB 機制。

OLE DB 樣本支援的最簡單提供者類型是不含命令的唯讀提供者。 也支援具有命令的提供者,書籤和讀取/寫入功能也一樣。 您可以藉由撰寫其他程式代碼來實作讀取/寫入提供者。 目前版本不支援動態數據列集和交易,但您可以視需要新增它們。

何時需要建立 OLE DB 提供者?

您不一定需要建立自己的提供者;Microsoft在 Visual C++ 的 [資料鏈接屬性 ] 對話方塊中提供數個預先封裝的標準提供者。 建立 OLE DB 提供者的主要原因,是利用通用數據存取策略。 這樣做的一些優點包括:

  • 透過任何語言存取數據,例如 C++、Basic 和 Visual Basic Scripting Edition。 它可讓組織中的不同程式設計人員以相同方式存取相同的數據,而不論其使用的語言為何。

  • 將數據開啟至其他數據源,例如 SQL Server、Excel 和 Access。 如果您想要在不同的格式之間傳輸數據,這非常有用。

  • 參與跨數據源 (異質) 作業。 這可以是數據倉儲的有效方式。 藉由使用 OLE DB 提供者,您可以保留其原生格式的數據,仍然可以在簡單的作業中存取數據。

  • 將其他功能新增至您的數據,例如查詢處理。

  • 藉由控制數據的操作方式,提高存取數據的效能。

  • 增強強固性。 如果您有只有一個程式設計人員可以存取的專屬數據格式,您就會面臨風險。 您可以使用 OLE DB 提供者,向所有程式設計人員開啟該專屬格式。

唯讀和可更新的提供者

提供者在複雜度和功能上可能會有很大的差異。 將提供者分類為唯讀提供者和可更新的提供者很有用:

  • Visual C++ 6.0 僅支援唯讀提供者。 建立 OLE DB 提供者 會討論如何建立唯讀提供者。
  • Visual C++支援可更新的提供者,可更新數據存放區(寫入至)。 如需可更新提供者的相關信息,請參閱 建立可更新的提供者; UpdatePV 範例是可更新提供者的範例。

如需詳細資訊,請參閱

另請參閱

資料存取
OLE DB SDK 文件
OLE DB 設計人員參考