Microsoft OLE DB 的游標服務概觀
Microsoft OLE DB 的數據指標服務補充數據提供者的數據指標支援函式。 因此,使用者會察覺到所有數據提供者的相對統一功能。
Cursor Service 會提供動態屬性,並增強特定方法的行為。 例如,Optimize 動態屬性可讓建立暫存索引來加速某些作業,例如 Find 方法。
游標服務在所有情況下均支援批次更新。 當數據提供者只能提供較少的數據指標,例如靜態數據指標時,它也會模擬更有能力的數據指標類型,例如動態數據指標。
關鍵詞
若要叫用此服務元件,請將 Recordset 或 Connection 物件的 CursorLocation 屬性設定為 adUseClient。
connection.CursorLocation=adUseClient
recordset.CursorLocation=adUseClient
動態屬性
叫用 OLE DB 的 Cursor Service 時,會將下列動態屬性新增至 Recordset 物件的 Properties 集合。 Connection 和 Recordset 物件動態屬性的完整清單列在 ADO 動態屬性索引中。 適當的相關聯 OLE DB 屬性名稱會包含在 ADO 屬性名稱之後的括弧中。
在叫用數據指標服務之後,基礎數據源看不到某些動態屬性的變更。 例如,在 Recordset 上設定 Command Time out 屬性時,該屬性不會被基礎數據提供者看到。
Recordset1.CursorLocation = adUseClient 'invokes cursor service
Recordset1.Open "authors", _
"Provider=SQLOLEDB;Data Source=DBServer;User Id=MyUserID;" & _
"Password=<password>;Initial Catalog=pubs;",,adCmdTable
Recordset1.Properties.Item("Command Time out") = 50
' 'Command Time out' property on DBServer is still default (30).
如果您的應用程式需要 Cursor Service,但您需要在基礎提供者上設定動態屬性,請在叫用 Cursor Service 之前先設定屬性。 不論數據指標位置為何,命令對象屬性設定一律會傳遞至基礎數據提供者。 因此,您也可以使用命令對象隨時設定屬性。
注意
即使基礎數據提供者支援,游標服務也不支援動態屬性DBPROP_SERVERDATAONINSERT。
屬性名稱 | 描述 |
---|---|
自動重新計算 (DBPROP_ADC_AUTORECALC) | 對於使用數據成形服務建立的記錄集,此值會指出計算和匯總數據行的頻率。 預設值 (value=1) 是在數據成形服務判斷值已變更時重新計算。 如果值為 0,則計算或匯總的欄位只有在最初建置階層時才會被計算。 |
批次大小 (DBPROP_ADC_BATCHSIZE) | 指出可以在傳送至數據存放區之前批處理的更新語句數目。 批次中的語句越多,數據存放區的來回行程就越少。 |
快取子資料列 (DBPROP_ADC_CACHECHILDROWS) | 針對使用數據成形服務建立的記錄集,這個值會指出子記錄集是否儲存在快取中以供日後使用。 |
游標引擎版本 (DBPROP_ADC_CEVER) | 正在使用的游標服務版本。 |
維持更改狀態(DBPROP_ADC_MAINTAINCHANGESTATUS) | 指出用來重新同步處理多個數據表聯結中一或多個數據列之命令的文字。 |
優化 | 指出是否應該建立索引。 當設定為 True時,會授權暫存建立索引以改善特定作業的執行。 |
重新塑造名稱 | 表示 Recordset的名稱。 可以在目前或後續的數據成形命令內參考。 |
重新同步指令 | 表示當 唯一數據表 屬性生效時,Resync 方法所使用的自定義命令字串。 |
獨特目錄 | 指示包含在 Unique Table 屬性中被參考的資料表的資料庫名稱。 |
唯一架構 | 指出 唯一數據表 屬性中所參考之數據表的擁有者名稱。 |
唯一表格 | 指出從多個數據表建立的 Record set 中一個數據表的名稱,這些數據表可由插入、更新或刪除來修改。 |
更新準則 (DBPROP_ADC_UPDATECRITERIA) | 指出 WHERE 子句中的哪些欄位是用來處理更新期間發生的衝突。 |
更新重新同步 (DBPROP_ADC_UPDATERESYNC) | 指出當 Unique Table 屬性生效時,Resync 方法是否在 UpdateBatch 方法及其行為之後被隱含叫用。 |
您也可以將動態屬性的名稱指定為 Properties 集合的索引,來設定或擷取動態屬性。 例如,取得並列印 Optimize 動態屬性的目前值,然後設定新的值,如下所示:
Debug.Print rs.Properties("Optimize")
rs.Properties("Optimize") = True
內建屬性的行為
OLE DB 的數據指標服務也會影響特定內建屬性的行為。
屬性名稱 | 描述 |
---|---|
游標類型 | 增補 Recordset可用的游標類型。 |
鎖定類型 | 補充 Recordset可用的鎖定類型。 啟用批次更新。 |
排序 | 指定一個或多個 Recordset 的欄位名稱,以及每個欄位的排序方式是遞增還是遞減。 |
方法行為
OLE DB 的游標服務會啟用或影響 Field 物件的 Append 方法,以及 Recordset 物件的 Open、Resync、UpdateBatch和 Save 方法的行為。