如果希望执行SQL Server数据库的命令,可以使用SqlCommand类。首先需要创建一个SqlCommand实例。SqlCommand类有4个构造器。SqlCommand的4个构造器都至少要求提供一个SqlConnection对象和一个命令字符串,通过参数传递给SqlCommand构造器。
……
Dim conNwindCE As SqlConnection = New SqlConnection( _
"server=192.168.0.10;database=Nwind_SQLCE;user id=sa;password=password;")
Dim cmdData As SqlCommand = New SqlCommand("SELECT * FROM Customers", _
conNwindCE)
conNwindCE.Open()
……
SqlCommand对象在执行命令之前,应该确认SqlConnection对象已打开。SqlCommand对象支持4个方法:
· ExecuteNonQuery——可执行一个不返回数据的SQL语句。
· ExecuteDataReader——返回一个可读取数据的对象。
· ExecuteScalar——通过查询返回一个单独的值,例如一个聚合值。
· ExecuteXmlReader——返回一个可读取XML格式数据的对象。
清单15-1中的代码演示如何正确使用SqlCommand对象。
清单15-1 使用SqlCommand
……
Dim iRet As Integer
Dim conNwindCE As New Data.SqlClient.SqlConnection
Dim connString As String
Try
' 创建、打开数据库连接
connString = "server=192.168.0.10;database=Nwind_SQLCE;user id=sa;pwd=pword;"
conNwindCE.Open()
' 创建命令对象
connString = "SELECT COUNT(*) FROM Customers"
Dim cmdData As Data.SqlClient.SqlCommand = _
New Data.SqlClient.SqlCommand(connString, conNwindCE)
iRet = cmdData.ExecuteScalar()
' 使用命令对象调用ExecuteNonQuery方法
cmdData.CommandText = "DELETE FROM Customers WHERE CustomerID='00001'"
cmdData.ExecuteNonQuery()
' 使用命令对象获得XML数据流
cmdData.CommandText = "SELECT * FROM Customers AS AUTO XML"
Dim xml As Xml.XmlReader = cmdData.ExecuteXmlReader()
' 利用命令对象获得数据集
cmdData.CommandText = "SELECT * FROM Customers "
Dim dr As Data.SqlClient.SqlDataReader = cmdData.ExecuteReader()
' 访问数据集中的数据
dr.Read()
dr.Close()
Catch ex As Data.SqlClient.SqlException
……
Finally
conNwindCE.Close()
End Try
……
代码的第一部分里,使用ExecuteScalar方法执行一条COUNT(*) SQL语句返回Customers表里的记录数。该方法只返回一个单独的值,即使是执行SELECT语句返回多行的情况下,也只返回第一行第一列的内容。当只需要返回一个单独值时,就可以使用这个方法。
在清单15-1里还演示了ExecuteNonQuery方法的用法。该方法用于无需返回查询结果的情况,例如执行Transact-SQL UPDATE、DELETE和INSERT等SQL语句。
如果需要XML数据流,则可以使用SqlCommand对象的ExecuteXmlReader方法。在第17章将介绍.NET Compact Framework所支持的XML数据处理功能。
(编辑:网站学习网)
|