批處理ADO.NET SQL語句分析
了解數據庫的人都知道很多數據庫支持把多條命令合并或批處理成一條單一命令執行。這里就批處理ADO.NET SQL語句來和大家說說。
批處理ADO.NET SQL語句
我們先舉個例子,SQL Server 使您可以用分號 (;) 分隔命令。把多條命令合并成單一命令,能減少到服務器的行程數,并提高應用程序的性能。例如,可以把所有預定的刪除在應用程序中本地存儲起來,然后再發出一條批處理命令調用,從數據源刪除它們。雖然這樣做確實能提高性能,但是,當對 DataSet 中的數據更新進行管理時,可能會增加應用程序的復雜性。要保持簡單,可能要在 DataSet 中為每個 DataTable 創建一個 DataAdapter。
用多個表填充 DataSet
如果使用批處理ADO.NET SQL語句檢索多個表并填充 DataSet,***個表用指定給 Fill 方法的表名命名。后面的表用指定給 Fill 方法的表名加上一個從 1 開始并且增量為 1 的數字命名。例如,如果運行下面的代碼:
- 'Visual Basic
- Dim da As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM Customers; SELECT * FROM Orders;", myConnection)
- Dim ds As DataSet = New DataSet()
- da.Fill(ds, "Customers")
- //C#
- SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customers; SELECT * FROM Orders;", myConnection);
- DataSet ds = new DataSet();
- da.Fill(ds, "Customers");
來自 Customers 表的數據放在名為 "Customers" 的 DataTable 中。來自 Orders 表的數據放在名為 "Customers1" 的 DataTable 中。
填充完 DataSet 之后,可以很容易地把 "Customers1" 表的 TableName 屬性改為 "Orders"。但是,后面的填充會導致 "Customers" 表被重新填充,而 "Orders" 表會被忽略,并創建另外一個 "Customers1" 表。為了對這種情況作出補救,創建一個 DataTableMapping,把 "Customers1" 映射到 "Orders",并為其他后面的表創建其他的表映射。例如:
- 'Visual Basic
- Dim da As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM Customers; SELECT * FROM Orders;", myConnection)
- da.TableMappings.Add("Customers1", "Orders")
- Dim ds As DataSet = New DataSet()
- da.Fill(ds, "Customers")
- //C#
- SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customers; SELECT * FROM Orders;", myConnection);
- da.TableMappings.Add("Customers1", "Orders");
- DataSet ds = new DataSet();
- da.Fill(ds, "Customers");
【編輯推薦】
<