ODBC:ODBC 資料指標程式庫
本主題描述 ODBC 資料指標程式庫,並說明如何使用它。 如需詳細資訊,請參閱
ODBC 資料指標程式庫是位於 ODBC 驅動程式管理員與驅動程式之間的動態連結程式庫 (DLL)。 在 ODBC 方面,驅動程式會維護資料指標,以追蹤其在記錄集中的位置。 游標會標記您已捲動的記錄集中的位置, 也就是目前的記錄。
資料指標程式庫和層級 1 ODBC 驅動程式
ODBC 資料指標程式庫提供第 1 層驅動程式下列新功能:
向前和向後捲動。 層級 2 驅動程式不需要資料指標程式庫,因為它們已經可捲動。
支援快照集。 資料指標程式庫會管理包含快照集記錄的緩衝區。 此緩衝區會反映程式對記錄的刪除和編輯,但不會反映其他使用者的新增、刪除或編輯。 因此,快照集只會像資料指標程式庫的緩衝區一樣目前。 在您呼叫
Requery
之前,緩衝區也不會反映您自己的新增專案。 動態集不使用資料指標程式庫。
即使驅動程式通常不支援快照集,資料指標程式庫也會提供快照集(靜態資料指標)。 如果您的驅動程式已經支援靜態資料指標,則不需要載入資料指標程式庫以取得快照集支援。 如果您使用資料指標程式庫,則只能使用快照集和正向記錄集。 如果您的驅動程式支援動態集(KEYSET_DRIVEN資料指標),而且您想要使用這些動態集,則不得使用資料指標程式庫。 如果您想要同時使用快照集和動態集,除非您的驅動程式同時支援這兩個物件,否則您必須以兩個不同的 CDatabase
物件(兩個不同的連接)為基礎。
定點更新和時間戳記資料行
注意
ODBC 資料來源可透過 MFC ODBC 類別存取,如本主題所述,或透過 MFC 資料存取物件 (DAO) 類別來存取。
注意
如果您的 ODBC 驅動程式支援 SQLSetPos
,如果可用,MFC 會使用,則本主題不適用於您。
大部分層級 1 驅動程式都不支援定點更新。 這類驅動程式依賴資料指標程式庫來模擬第 2 層驅動程式在這方面的功能。 資料指標程式庫會藉由在未變更的欄位上執行搜尋的更新,模擬定點更新支援。
在某些情況下,記錄集可能會包含時間戳記資料行作為其中一個未變更的欄位。 使用 MFC 記錄集搭配包含時間戳記資料行的資料表時發生兩個問題。
第一個問題涉及具有時間戳記資料行之資料表的可更新快照集集。 如果快照集所系結的資料表包含時間戳記資料行,您應該在呼叫 和 Update
之後呼叫 。 Requery
Edit
如果沒有,您可能無法再次編輯相同的記錄。 當您呼叫 Edit
,然後 Update
,記錄會寫入資料來源,並更新時間戳記資料行。 如果您未呼叫 Requery
,快照集中記錄的時間戳記值就不會再符合資料來源上的對應時間戳記。 當您嘗試再次更新記錄時,資料來源可能會因為不相符而不允許更新。
第二個問題涉及與 函 RFX_Date
式搭配使用時,CTime 類別 的限制,以將時間和日期資訊傳送至資料表或從資料表傳送。 CTime
處理 物件會在資料傳輸期間,以額外的中繼處理形式造成一些額外額外負荷。 物件的日期範圍 CTime
可能也會對某些應用程式太限制。 新版本的 RFX_Date
函式會採用 ODBC TIMESTAMP_STRUCT 參數, CTime
而不是 物件。 如需詳細資訊,請參閱 RFX_Date
MFC 參考 中的 宏和全域 。
使用資料指標程式庫
當您透過呼叫 CDatabase::OpenEx 或 CDatabase::Open 連接到資料來源時,您可以指定是否要使用資料來源的資料指標程式庫。 如果您要在該資料來源上建立快照集,請在 參數中指定 CDatabase::useCursorLib
選項, OpenEx
或將 bUseCursorLib 參數 Open
指定為 TRUE(預設值為 dwOptions
TRUE)。 如果您的 ODBC 驅動程式支援動態集,而且您想要在資料來源上開啟動態集,請勿使用資料指標程式庫(它會遮罩動態集所需的某些驅動程式功能)。 在此情況下,請勿在 中 OpenEx
指定 CDatabase::useCursorLib
或為 中的 Open
bUseCursorLib 參數指定 FALSE。