產生具型別的結果集
更新:2007 年 11 月
當 XSD 結構描述檔案的 CustomTool 屬性設定為 MSResultSetGenerator 時,就會產生具型別的 ResultSet 資料來源物件,而非一般具型別的 DataSet 資料來源物件。ResultSet 是快速的資料庫資料指標 (Cursor),可支援 UI 資料繫結、向前和向後捲動資料,以及更新資料庫中的資料。做為永遠連接的模型而言,ResultSet 會保持與資料庫的實際連接。
具型別的 ResultSet 功能
所產生的具型別 ResultSet 物件會提供對資料庫資料表的型別安全存取,與具型別的 DataSets 一樣。因此,產生的程式碼可確保在應用程式和資料庫之間傳遞的資料,會在編譯時期與資料庫結構描述正確相符。具型別結果集產生的程式碼可擴充 SQL Server Compact 3.5 ResultSet 基底類別 (Base Class),以提供目標資料庫資料表特有的屬性和方法。
以下各段落會摘要說明針對具型別 ResultSet 所產生的程式碼功能。
建構函式:產生的具型別 ResultSet 含有兩個建構函式 (Constructor)。預設建構函式是同時用於設計階段和基本執行階段的案例。Visual Studio 的設計階段會需要用預設建構函式連接至本機開發電腦上的資料庫。因此,產生的程式碼會含有本機 SQL Server Compact 3.5 資料庫檔案的連接字串 (Connection String)。預設建構函式會在執行階段,從與執行中應用程式相同的目錄切換成本機 SQL Server Compact 3.5 資料庫檔案。這就是基本執行階段案例。
連接字串:當執行階段案例更為複雜,例如當 SQL Server Compact 3.5 資料庫檔案不位於執行中目錄,或者連接字串有所不同時 (例如密碼),即可使用多載建構函式。此多載建構函式會採用兩個引數:自訂連接字串和自訂 ResultSetOptions 旗標。
連接屬性:連接屬性就是具型別 ResultSet 用來存取資料庫資料的實際 SqlCeConnection 物件。此連接屬性為公用,而且可加以存取,以便管理具型別 ResultSet 的連接狀態。例如,在進行某些交易時,可能需要關閉連接。
對資料表資料行的型別安全存取:產生的程式碼會針對資料表中的每個資料行,產生屬性存取子 (Accessor)。這個屬性型別是透過將基礎資料庫型別對應至 .NET Framework 型別所判斷。例如,nvarchar 會對應至 .NET Framework 字串。由於產生的屬性同時支援 Get 和 Set 存取子,您可以使用 .NET Framework 字串 (而非基礎資料庫的 nvarchar) 來提取和推入資料。每個資料行也都有 IsxxxDBNull 和 SetxxxDBNull 方法 (其中 xxx 是資料行名稱),因此可以從資料庫中取得和設定 DBNull。
AddxxxRecord 方法 (其中 xxx 是資料表名稱):這個方法可讓新的資料列加入至資料庫資料表中。AddxxxRecord 方法會針對資料表的每個資料行設定一個參數,但自動遞增的資料行除外,因為這些資料行的值是由資料庫引擎所指派。每個參數都會再次宣告為 .NET Framework 型別,以方便與應用程式搭配使用並取出基礎資料庫型別。在您呼叫這個方法後,並不需要呼叫更新。在呼叫之後,新的資料列就會認可到資料庫中。
DeletexxxRecord 方法 (其中 xxx 是資料表名稱):這個方法會從資料庫刪除目前的資料列。與 DataSet 不同的是,這個轉換不會進行快取,而且呼叫之後,就會從資料庫中刪除資料列。您不需要在呼叫此方法後呼叫更新。
Bind 方法:此 bind 方法會採用一個參數,亦即 BindingSource,它會資料繫結至表單上的一個或多個 UI 控制項。然後,這個方法就會將 BindingSource 繫結至具型別的 ResultSet 執行個體,完成資料繫結鏈結,並讓控制項直接顯示資料庫中的資料。
注意事項: 此設計階段案例需要使用 SQL Server Compact 3.5 資料庫的硬式編碼連接字串。例如,當某個專案在多位開發人員之間共用時,這個連接字串就可能會過期。因此,[資料來源] 視窗及 (或) Windows Form 設計工具可能不會開啟專案。您可以重新產生具型別的結果集程式碼,以修正這種情況。在 [方案總管] 中,以滑鼠右鍵按一下 XSD 結構描述檔案,然後按一下 [執行自訂工具]。