使用 Visual Studio 2005 客户端发送 SOAP 请求 (Visual Basic)
后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。
本主题中的示例与使用 Visual Studio 2005 客户端发送 SOAP 请求 (C#) 中提供的示例类似。唯一的不同是本主题中的示例使用 Visual Basic 编写。因此,本主题中只提供创建此示例所需的代码和步骤。
创建工作示例
由于创建此示例需要许多步骤,因此将此应用程序分为四个部分:
第一部分:执行存储过程。
第二部分:执行无参数的 SQL 查询。
第三部分:执行有参数的 SQL 查询。
第四部分:执行用户定义函数。
每部分都提供一组说明。在每部分的末尾,可以测试应用程序。
创建所需的代理类
在计算机上为此应用程序创建一个文件夹。
在客户端计算机上,从 Microsoft Visual Studio 2005 程序组启动 Microsoft Visual Studio 2005。
单击**“新建项目”**。
选择**“Visual Basic 项目”作为“项目类型”**。
在**“名称”**文本框中,指定 NativeSOAPApp2。
在**“位置”**文本框中,指定要保存此项目的文件夹路径。
选择**“Windows 应用程序”作为模板**,然后单击**“确定”**。
在“解决方案资源管理器”窗口中,右键单击**“引用”,然后选择“添加 Web 引用”。添加 Web 引用的另一种方法是从“项目”菜单选择“添加 Web 引用”**。
在**“地址”框中,键入 http://服务器/sql?wsdl(其中服务器是指服务器的名称),再按 Enter 键。如果成功生成 WSDL,您将看到端点说明。在此点,单击“添加引用”**。这将创建所需的代理类,以便调用 WSDL 文档中的方法。
第一部分:执行存储过程
在此部分中,应用程序请求 GetCustomerInfo Web 方法。
在 Form1 中,添加一个文本框 (textBox1)、一个按钮 (button1) 和一个列表框 (listBox1)。
右键单击此文本框,然后选择**“属性”**。将 Text 值从 textBox1 更改为 1。这是默认的 Customer ID 值。
右键单击 button1,再选择**“属性”**。
将 Text 属性值从 button1 更改为 ExecSP。
将 (name) 属性值更改为 ExecSP。
右键单击列表框 (listBox1),再选择**“属性”**。将 HorizontalScrollbar 属性值更改为 True。
双击 ExecSP。
将 ExecSP 的 Visual Basic 代码列表中的代码复制到此函数。
更新代码。用使用 CREATE ENDPOINT 创建端点时所标识的主机名更改对 server 的引用。
保存并编译项目。有关详细信息,请参阅前面的“编译代码”一节。
第二部分:执行无参数的 SQL 查询
在此部分中,客户端应用程序执行一个临时查询(FOR XML 查询)从 AdventureWorks2008R2 数据库的“雇员”表中检索三名雇员。
在 Form1 的**“[设计]”**选项卡上,添加另一个按钮 (button1)。
右键单击此新按钮,再选择**“属性”**。
将 Text 属性值从 button1 更改为 ExecBatchFindAllEmps。
将 (name) 属性值更改为 ExecBatchFindAllEmps。
双击 ExecBatchFindAllEmp。
将 FindAllEmps 的 Visual Basic 代码列表中的代码复制到此函数。
更新代码。用使用 CREATE ENDPOINT 创建端点时所标识的主机名更改对 server 的引用。
保存并编译项目。有关详细信息,请参阅前面的“编译代码”一节。
第三部分:执行有参数的 SQL 查询
除了即席查询的 SOAP 请求包含查询参数之外,此部分与上一部分类似。FOR XML 查询可检索指定雇员 ID 的雇员信息。
在 Form1 的**“[设计]”**选项卡中,添加一个按钮 (button1)。
右键单击此新按钮,再选择**“属性”**。
将 Text 属性值从 button1 更改为 ExecBatchFindAnEmp。
将 name 属性值更改为 ExecBatchFindAnEmp。。
双击 ExecBatchFindAnEmp。
将 FindAnEmp 的 Visual Basic 代码列表中的代码复制到此函数。
更新代码。用使用 CREATE ENDPOINT 创建端点时所标识的主机名更改对 server 的引用。
保存并编译项目。有关详细信息,请参阅前面的“编译代码”一节。
第四部分:执行用户定义函数
在此部分中,客户端应用程序会发送 SOAP 请求调用 UDFReturningScalar Web 方法。此 Web 方法对应于返回整数值的用户定义函数。
在 Form1 的**“[设计]”**选项卡中,添加另一个按钮 (button1)。
右键单击此新按钮,再选择**“属性”**。
将 Text 属性值从 button1 更改为 ExecUDFReturningScalar,
将 name 属性值更改为 ExecUDFReturningScalar。
双击 ExecUDFReturningScalar。
将 ExecUDF 的 Visual Basic 代码列表中的代码复制到此函数。
更新代码。用使用 CREATE ENDPOINT 创建端点时所标识的主机名更改对 server 的引用。
保存并编译项目。有关详细信息,请参阅前面的“编译代码”一节。
由于端点指定集成身份验证,因此代码中将显示以下行:proxy.Credentials = System.Net.CredentialCache.DefaultCredentials。
如果使用 SQL Server 身份验证,建议删除此行并用具有以下功能的代码替换:将 WS-Security 标头实现为提供的基于 SQL Server 的身份验证凭据。有关详细信息,请参阅 通过 SOAP 的 SQL Server 身份验证。
注意 |
---|
如果正在使用 SQL Server 身份验证或基本身份验证,则 SQL Server 要求您使用安全套接字层 (SSL) 对用户凭据进行安全加密传输,否则会以可见的明文形式传输。有关使 SSL 能与 HTTP 端点一起使用的详细信息,请参阅配置 SSL 使用的证书。 |
编译代码
SQL Server 在其安装过程中将安装 .NET Framework 2.0。这些编译指令使用最新的 .NET Framework(这是 \WINDOWS\Microsoft.NET\Framework 文件夹中的最高版本号)。
编译代码
- 保存整个项目。
打开命令提示符,找到保存项目的文件夹。
从此文件夹中,复制 Web Reference\Server 子文件夹中的 Reference.vb 文件(例如,复制“Web Reference\Server\Reference.vb”)。Form1.vb 和 Reference.vb 文件应在同一文件夹中。
编译代码,并指定可执行 (.exe) 文件的名称。例如,如果可执行文件的名称为 NativeSOAPApp2.exe,则命令行如下:
\WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx\vbc.exe /out:NativeSOAPApp2.exe /r:System.dll /r:System.Data.dll /r:System.Xml.dll /r:System.Web.Services.dll /r:Microsoft.VisualBasic.dll /r:System.Drawing.dll /r:System.Windows.Forms.dll /m:Form1 Form1.vb Reference.vb
xxxxx 是与 .NET Framework 的版本对应的文件夹编号。
这将在当前目录中创建可执行文件 NativeSOAPApp2.exe。
注意 如果使用早期版本的 .NET Framework,则可能会出现运行时错误。如果出现此错误,请尝试在 SELECT 语句的结尾处添加 FOR XML AUTO 子句以更新 GetCustomerInfo 存储过程,如下所示:
SELECT TOP 3 SalesOrderID, OrderDate FROM SalesOrderHeader WHERE CustomerID = @CustomerID FOR XML AUTO
该存储过程的执行结果将显示在列表框中。