巧學ADO.NET DataAdapter參數使用
大家對與ADO.NET都有一定的了解,這里我們一起來看看關于ADO.NET DataAdapter參數的知識要領。DbDataAdapter具有四個用于從數據源檢索數據和更新數據源中數據的屬性:SelectCommand 屬性返回數據源中的數據;InsertCommand、UpdateCommand 和 DeleteCommand 屬性用于管理數據源中的更改。
調用 DataAdapter 的 Fill 方法之前必須設置 SelectCommand 屬性。在調用 DataAdapter 的 Update 方法之前必須設置 InsertCommand、UpdateCommand 或 DeleteCommand 屬性,具體取決于對 DataTable 中的數據做了哪些更改。
例如,如果已添加行,在調用 Update 之前必須設置 InsertCommand。當 Update 正在處理已插入、已更新或已刪除的行時,DataAdapter 將使用相應的 Command 屬性來處理該操作。有關已修改行的當前信息將通過 Parameters 集合傳遞到 Command 對象。
當更新數據源中的行時,將調用 UPDATE 語句,該語句使用唯一標識符來標識該表中要更新的行。該唯一標識符通常是主鍵字段的值。UPDATE 語句使用的參數既包含唯一標識符又包含要更新的列和值,如下面的 Transact-SQL 語句所示。
- UPDATE Customers SET CompanyName = @CompanyName
- WHERE CustomerID = @CustomerID
ADO.NET DataAdapter參數占位符的語法取決于數據源。此示例顯示 SQL Server 數據源的占位符。使用問號 (?) 占位符代表 System.Data.OleDb 和 System.Data.Odbc 參數。
在此 Visual Basic 示例中,CompanyName 字段使用 CustomerID 等于 @CustomerID 參數值的行中的 @CompanyName 參數值來進行更新。這些參數使用 SqlParameter 對象的 SourceColumn 屬性從已修改的行中檢索相關信息。下面是上一示例 UPDATE 語句的參數。代碼假定變量 adapter 表示有效的 SqlDataAdapter 對象。
- adapter.Parameters.Add( _
- "@CompanyName", SqlDbType.NChar, 15, "CompanyName")
- Dim parameter As SqlParameter = _
- adapter.UpdateCommand.Parameters.Add("@CustomerID", _
- SqlDbType.NChar, 5, "CustomerID")
- parameter.SourceVersion = DataRowVersion.Original
#T#Parameters 集合的 Add 方法接受參數的名稱、數據類型、大小(如果適用于該類型)以及 DataTable 中的 SourceColumn 的名稱。請注意,@CustomerID 參數的 SourceVersion 設置為 Original。這樣可以保證,如果標識列的值已經在修改后的 DataRow 中被更改,就一定會更新數據源中的現有行。在這種情況下,Original 行值將匹配數據源中的當前值,而 Current 行值將包含更新的值。沒有設置 @CompanyName 參數的 SourceVersion,而將使用默認的 Current 行值。
對于 DataAdapter 的 Fill 操作和 DataReader 的 Get 方法,都將從 .NET Framework 數據提供程序中返回的類型來推斷 .NET Framework 類型。推斷的 .NET Framework 類型和 Microsoft SQL Server、OLE DB 和 ODBC 數據類型的訪問器方法在 ADO.NET 中的數據類型映射 中說明。
SourceColumn 和 SourceVersion 可以作為ADO.NET DataAdapter參數傳遞給 Parameter 構造函數,也可以設置為現有 Parameter 的屬性。SourceColumn 是將要從中檢索 Parameter 值的 DataRow 中的 DataColumn 的名稱。SourceVersion 指定 DataAdapter 用于檢索該值的 DataRow 版本。