如果操作MS SQL Server 内的数据,要透过SQL 数据操作组件。SQL 数据操作组件最主要是针对MS SQL Server 来进行数据操作,它直接呼叫MS SQL Server 中的API 而不透过OLE DB,所以效率比较好。ADO 数据操作组件与SQL 数据操作组件的对象模型以及使用方法都一样,如下图所示:
为了证明使用SQL 数据操作组件和MS SQL Server 联机比使用ADO 数据操作组件的效率好,我们写了一个测试程序。这个程序从MS SQL Server 中取回一万笔数据,并计算使用SQL 数据操作组件比ADO 数据操作组件的效能快多少(对测试程序有兴趣可以到本章目录中检视Compare.aspx 这个程序):
我们看到SQL 数据操作组件比ADO 数据操作组件大约快了35% 的时间,所以针对MS SQLServer 的数据操作当然使用SQL 数据操作组件。
宣告SQL 数据操作组件的名称地址
在使用SQL 数据操作组件的时候,除了要宣告System.Data 的名称地址外,还要宣告System.Data.SQL 名称地址;如下程序代码片段所示:
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.SQL"%>
宣告SQL 数据操作组件
我们在宣告Connection 对象、Command 对象、DataSetCommand 对象及DataReader 对象的时候,记得加上SQL 三个前缀。如下列范例所示:
Dim cnA As SQLConnection
Dim cmA As SQLCommand
Dim dscA As SQLDataSetCommand
Dim drA As SQLDataReader
从MS SQL Server 取回资料
另外在建立Connection 对象的时候,由于已经知道要和MS SQL Server 联机,所以不需要指定Connection 对象的Provider 属性。另外因为DataSet 对象不是数据操作组件,不负责执行数据源的数据操作,故DataSet 的宣告及使用方法不变。下列范例利用SQL 数据控制组件将MSSQL Server 中北风数据库的Employees 数据表取回:
<%@Import Namespace=System.Data%>
<%@Import Namespace=System.Data.SQL%>
<Script Language="VB" Runat="Server">
Sub Page_Load(Sender As Object, e As EventArgs)
Dim strConStr As String = "Data Source=Charles;" & _
"Initial Catalog=Northwind;" & _
"User Id=sa;Password="
Dim strComStr As String = "Select * From Employees"
Dim dscA As SQLDataSetCommand = New SQLDataSetCommand(strComStr,
strConStr)
Dim dsDataSet As DataSet = New DataSet()
dscA.FillDataSet(dsDataSet, "Employees")
Dim dtTable As DataTable = dsDataSet.Tables("Employees")
Response.Write("<h3>MS SQL Server 中北风数据库的Employees 数据
表:</h3>")
Dim shtR As Short
For shtR=0 To dtTable.Rows.Count-1
Response.Write(dtTable.Rows(shtR)("FirstName") & " " & _
dtTable.Rows(shtR)("LastName") & "<br>")
Next
End Sub
</SCRIPT>