在SQLserver2005中调用webservice

 介绍

    SQL SERVER2005提供了在.NET中自定义函数、存储过程、聚合、触发器以及类型的功能。于是,我们可以在数据库的函数、存储过程或类型整合.NET对象方法等。在之前的一篇文章,我们演示了如何将正则表达式功能整合到SQL CLR中。在本文中,还是演示这种整合,但是这次是从SQL CLR中调用一个Web Service。我们将使用AdventureWorks这个样例数据库,定义一个函数,根据http://www.webservicex.net/CurrencyConvertor.asmx这个Web Service提供的汇率,进行从欧元到美元的外汇转换。(这个WebService提供的汇率,只用于演示,不能作为真实金融交易的数据。)

本文没有详细的描述所有的细节,读者应该具有一定的在SQL SERVER2005下开发CLR的基础。

定义转换函数

      首先,在Visual Studio 2005中,根据开发模板,选择新建一个C#或者VB.NET的SQL SERVER项目。(注意:在Beta版中,必须在安装VS2005之前安装SQL SERVER 2005)

      *在一些非正式的VS2005的版本中,直接使用工具引用WebService生成的代理类不能在SQL SERVER CLR中使用。原因是这种代理类生成了不能使用在CLR中的同步方法。具体可参考Vineet Rao 在 blogs.msdn.com中的文章。解决的方法是利用C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/Bin目录下的WSDL.exe工具生成老式异步方法的代理类,只用这种类才能在CLR中以External ACCESS的权限加载。如果我们使用“新”的代理类,必须使用Unsafe的安全级别,这种方式应尽量避免。我们可以使用一个XML配置文件来生成需要规范的代理类。创建一个以下内容的XML文件:

  
  
  
<wsdlParameters xmlns ='http://microsoft.com/webReference/'> <language>c#</language> <protocol>Soap</protocol> <nologo>true</nologo> <sharetypes>false</sharetypes> <webReferenceOptions> <codeGenerationOptions>properties oldAsync</codeGenerationOptions> </webReferenceOptions> </wsdlParameters>


    假设保存路径为:c:/oldwsdlconfig.xml(如果使用VB.net项目,则替换使用<language>vb</language>元素)。然后,使用以下命令行生成代理类:

C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/Bin/wsdl.exe /par:c:/ oldwsdlconfig.xml http://www.webservicex.net/CurrencyConvertor.asmx

    运行结束后,将生成CurrencyConvertor.cs(或者.vb)文件。在VS中使用“添加现有项”定位到文件的位置后,将CurrencyConvertor.cs(或者.vb)文件增加到现有项目中。同时在项目中增加对System.Web.Services的引用:

    下面,我们防止代码在使用WebService通信中使用序列化和反序列化的过程(创建专门进行序列化的程序集)。在VS

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值