定义好命令并执行后就可以操作数据库中的数据。在类Command中提供了如下三个可执行的命令。
1)ExecuteNonQuery():执行一个命令,但不返回任何结果。
2)ExecuteReader():执行一个命令,返回一个类型化的IDataReader。
3)ExecuteScalar():执行一个命令,返回一个值。
在类SqlCommand中,通过ExecuteXmlReader()方法执行一个命令,返回一个Xml Reader对象,它可以用于传送从数据库中返回的XML代码段。
1.ExecuteNonQuery()
ExecuteNonQuery()一般用于执行UPDATE、INSERT和DELETE语句。例如在下面的代码中,使用ExecuteNonQuery()指令对指定的数据进行了更新处理。


上述实例文件的设计流程如下。
1)使用using指令引用SQL Server数据库。
2)定义变量source,设置和Northwind数据库的连接参数。
3)定义select设置更新SQL语句。
4)关闭数据库连接,并返回被操作数据的行数。
将上述代码保存为“光盘:\daima\17\ExecuteNonQuery”,把库内ContactName值为mm的ContactName修改为123,如图17-11所示。
ExecuteNonQuery()返回命令语句所操作的行数,它是一个整数。
2.ExecuteReader()

图17-11 返回被操作数据的行数
ExecuteReader()能够根据使用的提供程序返回一个类型化的DataReader对象,返回的对象可以用于迭代返回的记录。例如在下面的代码中,使用ExecuteReader()指令获取了指定数据库的数据。

上述代码的设计流程如下。
1)使用using指令引用SQL Server数据库。
2)定义变量source,设置和Northwind数据库的连接参数。
3)定义mm设置更新SQL语句。
4)定义SqlDataReader对象nn,并使用ExecuteReader指令执行mm对象的语句。
将上述代码保存为“光盘:\daima\17\ExecuteReader”,执行后将显示库内的指定数据,如图17-12所示。

图17-12 返回指定库的数据
3.ExecuteScalar()(https://www.xing528.com)
ExecuteScalar()可以从SQL语句返回一个结果,例如某表中的记录个数,或者服务器的当前日期或时间。例如在下面的代码中,通过ExecuteScalar()指令返回了指定数据库表的行数。

上述实例文件的设计流程如下。
1)使用using指令引用SQL Server数据库。
2)定义变量source,设置和Northwind数据库的连接参数。
3)定义mm设置更新SQL语句。
4)定义SqlDataReader对象nn,并使用ExecuteReader指令执行mm对象的语句。
将上述代码保存为“光盘:\daima\17\ExecuteScalar”,执行后将显示Customers表内数据的行数,如图17-13所示。

图17-13 返回Customers表内数据的行数
4.ExecuteXmlReader()
ExecuteXmlReader()执行后将给调用者返回一个XmlReader对象。SQL Server允许使用FOR XML子句来扩展SQL子句,上述子句可以是如下三个选项之一。
FOR XML AUTO:根据FROM子句中的表建立一个树。
FOR XML RAW:结果集中的行射为元,其中的列映射为属性。
FOR XML EXPLICIT:必须指定要返回的XML树的形状。
ExecuteXmlReader执行后将为调用者返回一个XmlReader对象。SQL Server允许使用FOR XML子句来扩展SQL子句,上述子句可以是如下三个选项之一。
FOR XML AUTO:根据FROM子句中的表建立一个树。
FOR XML RAW:结果集中的行射为元,其中的列映射为属性。
FOR XML EXPLICIT:必须指定要返回的XML树的形状。
例如在下面的代码中,通过ExecuteXmlReader()指令将数据库内的数据建立了一个树:


将上述代码保存为“光盘:\daima\17\ExecuteXmlReader”,执行后将输出显示创建的树结构代码,如图17-14所示。

图17-14 返回树结构代码
注意
必须导入System.Xml命名空间后才能输出返回的XML。本例在SQL语句中包含了FOR XML AUTO子句,然后调用ExecuteXmlReader()方法。
在SQL子句中,指定了FROM Customers,这样类型Customers的元素就显示在输出中。为它添加元素,每个元素对应于从数据库中选择出来的列。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
