共用方式為


資料指標類型

Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 資料指標與 SQL Server 中所用的資料指標類似。本節說明兩者之間的差異。如需資料庫資料指標的完整說明,請參閱《SQL Server 線上叢書》。

SQL Server Compact Edition 支援下列資料指標類型:

  • 基底資料表
  • 靜態
  • 順向
  • 順向/唯讀
  • 索引鍵集驅動

基底資料表資料指標

基底資料表資料指標是可用資料指標的最低層級,這些資料指標直接在儲存引擎上運作,而且是所有支援的資料指標類型中最快速的。基底資料表資料指標能以最小成本向下捲動或向上捲動,而且可以更新。

您也可直接在索引上開啟資料指標,並利用受支援的索引在資料表中排列資料列順序,啟用搜尋特定值的功能,並且根據索引中一個範圍內的值來限制資料列。

基底資料表資料指標具有動態成員資格,這表示,如果這兩者在相同交易範圍內,兩個在相同資料表上開啟的資料指標可立即看到插入、刪除和變更資料。由於您可更新基底資料表資料指標,因此用戶端可使用這種資料指標來變更基礎資料。

基底資料表資料指標無法呈現查詢的結果,查詢結果 (例如 SELECT * FROM tablename) 不會透過基底資料表資料指標來傳回,而是會使用某個支援的查詢結果資料指標。

以下是如何使用 ADO .NET 取得基底資料表資料指標的範例:

//Base Table Cursor

cmd.CommandText = "tablename";

cmd.CommandType = CommandType.TableDirect;

SqlCeResultSet rs = cmd.ExecuteResultSet(ResultSetOptions.Scrollable | ResultSetOptions.Updatable);

以下是如何使用 ADO .NET 取得索引資料指標的範例:

cmd.CommandText = "tablename";

cmd.IndexName = "indexname";

cmd.CommandType = CommandType.TableDirect;

SqlCeResultSet rs = cmd.ExecuteResultSet(ResultSetOptions.Scrollable | ResultSetOptions.Updatable);

靜態資料指標

靜態資料指標 (在 SQL Server Compact Edition 的舊版中是指可捲動查詢資料指標) 可建立並儲存結果集的完整複本,一個例外情況是在使用者明確要求時所擷取的長數值資料,此結果集只會在必要時被填入。這與 SQL Server 不同,它會在資料指標建立時擴展結果集。靜態資料指標支援向上捲動和向下捲動,但是不支援更新。靜態資料指標看不到對非敏感資料的外部變更,查詢結果會在資料指標的存留期內被快取。雖然靜態資料指標的功能性高於順向資料指標,但靜態資料指標速度較慢且佔用較多記憶體,建議您只有在需要捲動功能且索引鍵集資料指標不適合時,才考慮使用靜態資料指標。

以下是如何使用 ADO.NET 取得靜態資料指標的範例:

cmd.CommandText = "Select * from tablename";

SqlCeResultSet rs = cmd.ExecuteResultSet(ResultSetOptions.Scrollable | ResultSetOptions.Insensitive);

順向資料指標

順向資料指標是最快的可更新資料指標,不過它不支援捲動,只支援以序列方式從資料指標的開頭到結尾提取資料列。在提取資料列之前,不會從資料庫擷取資料列。由目前使用者所執行或其他使用者所認可的所有 INSERT、UPDATE 和 DELETE 陳述式,對結果集中資料列的影響效果,會在資料列從資料指標中被提取時顯示。由於資料指標不能向上捲動,因此在提取資料列之後對資料庫中資料列所做的變更,無法使用資料指標加以查閱。

順向資料指標及順向/唯讀資料指標是最快速的查詢式資料指標,當速度和記憶體支配是最重要考量因素時,應該使用這些資料指標。

以下是如何使用 ADO .NET 取得順向資料指標的範例:

cmd.CommandText = "Select * from tablename";

SqlCeResultSet rs = cmd.ExecuteResultSet(ResultSetOptions.Updatable);

順向/唯讀資料指標

順向/唯讀資料指標 (在 SQL Server Compact Edition 的舊版中指的是順向資料指標) 是最快的資料指標,但是它無法更新。

以下是如何使用 ADO.NET 取得順向/唯讀資料指標的範例:

cmd.CommandText = "Select * from tablename";

SqlCeResultSet rs = cmd.ExecuteResultSet(ResultSetOptions.None);

注意 您不能在只傳回唯讀資料行的查詢上建立唯讀資料指標,因為在內部所有 SQL Server Compact Edition 資料指標都是可更新的。SQL Server Compact Edition 無法更新 SqlCeResultSet 中傳回的唯讀資料行,因此將會失敗並顯示錯誤:「無法產生查詢的可更新資料指標,因為沒有可更新的資料行」。

索引鍵集驅動資料指標

SQL Server Compact Edition 中的索引鍵集驅動資料指標是可更新的可捲動資料指標。索引鍵集驅動資料指標由稱為索引鍵集的一組實體識別碼來控制。索引鍵集以資料指標開啟當時能合格用於 SELECT 陳述式的所有資料列為基礎。它會在資料指標開啟時於暫存資料表中建立。使用索引鍵集驅動資料指標時,會在執行查詢時判定成員資格。

SQL Server Compact Edition 中的索引鍵集驅動資料指標與 SQL Server 中的索引鍵集驅動資料指標稍有差異。在 SQL Server 中,索引鍵集驅動資料指標使用一組唯一識別碼做為索引鍵集中的索引鍵;在 SQL Server Compact Edition 中,索引鍵是代表值在資料表中的邏輯儲存位置之書籤,它們不是唯一識別碼。

雖然對一些變更敏感,但是索引鍵集驅動資料指標的敏感度不如其他資料指標,例如,在資料指標外部的插入動作將不會被察覺,不過最後可以看見資料指標內部的插入動作。在此情況下,建議您關閉並重新開啟資料指標,或是使用順向資料指標。

由於 SQL Server Compact Edition 使用書籤來定義索引鍵集,因此使用資料指標可看見對索引鍵集中所含資料列資料值的所有變更,無論是在資料指標內部所做的變更,或是在資料指標外部所做的變更,這點同樣適用。

索引鍵集資料指標中的任何刪除動作,無論是在資料指標內部或外部發生,都將導致嘗試提取資料列時回報該資料列已刪除。

以下是如何使用 ADO .NET 取得索引鍵集驅動資料指標的範例:

cmd.CommandText = "Select * from tablename";

SqlCeResultSet rs = cmd.ExecuteResultSet(ResultSetOptions.Scrollable | ResultSetOptions.Updatable);

使用聯結

如果您用於開啟索引鍵集驅動資料指標的查詢包含聯結資料行,這些資料行是不可更新的,使用者可在這些資料行中插入新值,但是不支援更新。

如果索引鍵集用於擴展使用者可更新的控制項,如同 DataGrid 物件,使用者可能會嘗試更新控制項中的值,不過更新將會失敗。如果您正在開發使用 DataGrid 顯示聯結資料行資料的應用程式,請確認在 DataGrid 中將聯結資料行設為唯讀。

請參閱

概念

資料指標 (SQL Server Compact Edition)
選擇資料指標類型
資料指標與鎖定
隱含資料指標轉換
更新索引鍵集驅動的資料指標

說明及資訊

取得 SQL Server Compact Edition 協助