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