示例ADO.NET SelectCommand修改
ADO.NET經(jīng)過長時間的發(fā)展,很多用戶都很了解ADO.NET了,這里我發(fā)表一下個人理解,和大家討論討論。若要為 DataAdapter 自動生成 SQL 語句,請先設(shè)置 DataAdapter 的 SelectCommand 屬性,然后創(chuàng)建 CommandBuilder 對象,并將該對象指定為 CommandBuilder 將自動為其生成 SQL 語句的 DataAdapter 的參數(shù)。
- ' Assumes that connection is a valid SqlConnection object
- ' inside of a Using block.
- Dim adapter As SqlDataAdapter = New SqlDataAdapter( _
- "SELECT * FROM dbo.Customers", connection)
- Dim builder As SqlCommandBuilder = New SqlCommandBuilder(adapter)
- builder.QuotePrefix = "["
- builder.QuoteSuffix = "]"
ADO.NET SelectCommand修改
#T#如果您在自動生成 INSERT、UPDATE 或 DELETE 命令后修改 SelectCommand 的 CommandText,則可能會發(fā)生異常。 如果修改后的 SelectCommand.CommandText 包含的架構(gòu)信息與自動生成 INSERT、UPDATE 或 DELETE 命令時使用的 SelectCommand.CommandText 不一致,則以后對 DataAdapter.Update 方法的調(diào)用可能會試圖訪問 SelectCommand 所引用的當(dāng)前表中已不存在的列,并且將會引發(fā)異常。可以通過調(diào)用 CommandBuilder 的 RefreshSchema 方法來刷新由 CommandBuilder 用于自動生成命令的架構(gòu)信息。如果您想知道自動生成了哪個命令,可以使用 ADO.NET SelectCommand修改對象的 GetInsertCommand、GetUpdateCommand 和 GetDeleteCommand 方法并檢查關(guān)聯(lián)命令的 CommandText 屬性,以獲得對自動生成命令的引用。
以下代碼示例向控制臺寫入已自動生成的更新命令。
- Console.WriteLine(builder.GetUpdateCommand().CommandText)
下面ADO.NET SelectCommand修改示例在 custDS 數(shù)據(jù)集中重新創(chuàng)建 Customers 表。然后調(diào)用 RefreshSchema 方法,使用此新列的信息來刷新自動生成的命令。
- ' Assumes an open SqlConnection and SqlDataAdapter inside of a Using block.
- adapter.SelectCommand.CommandText = _
- "SELECT CustomerID, ContactName FROM dbo.Customers"
- builder.RefreshSchema()
- custDS.Tables.Remove(custDS.Tables("Customers"))
- adapter.Fill(custDS, "Customers")