因为 SqlDataAdapter2 是使用查询和连接串字符串定义的,所以 Fill 方法将建立到 SQL Server 数据库的连接、执行查询并将结果返回到 DataSet。
下一步,我们将看一看在表中插入行的代码:
|
我们首先定义将要使用的对象和变量。然后创建一个 ADO.NET SqlConnection 对象 (sqlConn),并将连接字符串作为参数传递给该对象。然后定义查询,该查询将行插入到变量 strCmdText 中的 Customers 表中。
下一步,我们定义一个 ADO.NET SqlCommand 对象,并将查询和 SqlConnection 对象作为参数传递给该对象。然后,我们打开 SqlCommand 对象上的连接,并调用 ExecuteNonQuery 方法。ExecuteNonQuery 方法返回数据库操作所影响的行的数目。
除了传递给 SqlCommand 对象的查询以外,更新和删除表的代码与插入操作的代码基本相同。本文列出了这些代码,但因为它与插入操作的代码相同,所以没有对该代码进行赘述。
以下代码将更新表中的一行:
|
以下代码将删除表中的一行。
|
这些示例展示了如何使用 SqlCommand 对象的 ExecuteNonQuery 方法。SqlCommand 对象还具有其他几个方法,包括专用于 SQL Server 处理 XML 数据的方法。在下一个示例中,我们将介绍它的工作原理。
XML 和 Visual Studio .NET
SQL Server 2000 具有对 XML 的内置支持。其中一个功能是 Select 语句中的 For XML 子句,它返回一个作为 XML 的结果集。SqlCommand 对象具有 ExecuteXMLReader 方法,此方法利用 SQL Server 中的这一功能。
下一个示例将展示 SqlCommand 对象的另一个应用。我们将查询 Customers 表,将结果作为 XML 返回,然后在窗体的文本框中显示该 XML。
查询 Customers 表并将结果作为 XML 返回
1、向项目添加一个新窗体 (Form3) 并向该窗体添加一个文本框。将文本框的 MultiLine 属性更改为 True、Width 属性更改为 504、Height 属性更改为 152(如图 21 所示)。

图21:TextBox 属性页
2、向窗体添加一个按钮,将此按钮的 Name 属性和 Text 属性更改为 GetXML。
3、双击该按钮打开单击事件的代码窗口,然后添加以下代码。请记住更改数据源、用户 ID 和密码,使其与您的服务器匹配。
|
您的代码窗口应类似与图 22 所示(数据源、用户 ID 和密码可能会有所不同)。

图22:带有 GetXML_Click 子例程代码的 Form3 的窗体类
在此代码示例中,我们首先定义要使用的对象和变量。XMLTextReader 对象用于保存从数据库返回的数据。StringBuilder 对象用于根据 XMLTextReader 对象中的数据创建 XML 字符串。
首先,我们创建一个 SqlConnection 对象 (SQLServiceCallConn) 并传入数据库的连接参数。然后,设置 SqlCommand 对象 (SqlCommand) 的 CommandType 属性和 CommandText 属性。请注意,我们在查询中使用了 For XML Auto 语句。它指示 SQL Server 将查询结果作为 XML 字符串返回。
然后,使用 SqlCommand 对象的 ExecuteXmlReader 方法来执行我们的 Transact-SQL 语句。此方法旨在利用 SQL Server 2000 的本地 XML 支持并返回一个 XMLTextReader 对象。最后一步是使用 StringBuilder 对象从 XMLTextReader 对象中提取一个包含从 SQL Server 返回的 XML 的字符串。
可以通过导入 System.Text 和 System.Data.SqlClient 命名空间来缩短 StringBuilder、SqlCommand 和 SqlConnection 对象的完全限定名称(如图 23 所示)。为此,请在窗体类定义上方插入以下代码:
Imports System.Text |

图 23:使用简写表示法定义 StringBuilder 和 SqlConnection 对象的源代码
要测试该应用程序,请将 Startup 对象更改为 Form3 并运行应用程序(按 F5 键)。单击 GetXML。Customers 表的内容将作为 XML 返回并显示在文本框中(如图 24 所示)。

图24:示例应用程序输出结果
SQLXML 3.0
在前面的示例中,我们讨论了 SQL Server 对 XML 的内置支持,有时也称其为 SQLXML。SQLXML 3.0 包含以下托管类,可以简化 SQLXML 在 Visual Studio .NET 中的使用。
| 类 | 说明 |
| SqlXmlCommand 对象 | 将 XML 数据从 SQL Server 返回到一个新的或现有的 Stream 对象,或将数据返回到一个 XMLReader 对象。此对象还包含一个用于创建参数的方法。 |
| SqlXmlParameter 对象 | 用于填充使用 SqlXMLCommand 对象创建的参数。 |
| SqlXmlAdapter 对象 | 用 SQL Server 中的 XML 数据填充数据集。此对象还将更新应用于数据集中的 SQL Server 数据。 |
这些托管类允许您通过多种方法处理 SQL Server 中的 XML 数据,包括:
◆执行 SQL 查询以返回 XML 数据
◆对 XML 数据应用 XSL 转换
◆对 XML 数据执行 XPath 查询
对于最后一个示例应用程序,我们将扩展以前的示例,使用 SQLXML 托管类返回 SQL 查询中的 XML 数据。
重要信息:必须安装 SQLXML 3.0 才能运行此示例应用程序。SQL Server 2000 http://dev.chinaitpower.com/dotnet/webservice/' target='_blank'>Web Services 工具包附带了 SQLXML 3.0,也可以从 SQLXML and XML Mapping Technologies(英文)下载 SQLXML 3.0。
必须将 SQLXML 组件引用添加到项目中后才能使用 SQLXML 托管类。
添加 SQLXML 组件引用
1、打开解决方案资源管理器:在 View(视图)菜单中,单击 Solution Explorer(解决方案资源管理器)。
2、在 ServiceCall 项目下,右键单击 References(引用),然后单击 Add Reference(添加引用)。
3、在 Add Reference(添加引用)对话框中,单击 .NET 选项卡。
4、找到名为 Microsoft.Data.SqlXml 的组件,并突出显示该组件。
5、单击 Select(选择),然后单击 OK(确定)。
6、保存 ServiceCall 项目。
7、打开 Form3.vb,在该窗体中 GetXML 按钮旁边添加一个新按钮,然后将新按钮的 Name 属性和 Text 属性更改为 SQLXML。
8、双击 SQLXML 按钮打开单击事件的代码窗口并添加以下代码。请记住更改数据源、用户 ID 和密码,使其与您的服务器匹配。
|
在此代码示例中,我们首先定义要使用的对象和变量。Stream 对象 (strm) 将保存从查询返回的 XML 数据。然后,定义 SqlXmlCommand 对象 (sqlXmlCmd),并将连接字符串作为参数传递给该对象。
下一步,设置 SqlXmlCommand 对象上的参数。CommandType 被设置为 Sql,它是一个默认值,在此列出以帮助您理解。CommandText 被设置为查询的值,该查询就是我们在此示例的第一部分使用的同一个查询。然后,我们将调用 SqlXmlCommand 对象的 ExecuteStream 方法,该方法将执行 SQL 语句,并将 XML 数据放入 Stream 对象中。
下一步,我们定义 StreamReader 对象 (streamRdr),并将 Stream 对象 (strm) 作为参数传递给该对象。这样将使用 XML 数据填充 StreamReader 对象。在最后一步中,我们将加载带有来自 StreamReader 对象的 XML 数据的文本框。
应仍将 Startup 对象设置为 Form3,然后保存项目、运行应用程序(按 F5 键)并单击 SQLXML 按钮。输出结果应该与单击 GetXML 按钮时的输出完全一样,如图 24 所示。
