[翻译]通过WebService调用SQLXML(SQL Server 2005)
发布时间:2020-12-17 02:52:40 所属栏目:安全 来源:网络整理
导读:原文地址:http://www.codeproject.com/KB/webservices/SQLToXMLWebService.aspx [翻译]通过WebService调用SQLXML(SQL Server 2005) 原文发布日期:2007.02.04 作者:Russ Quinn 翻译:webabcd 介绍 我最近需要给用户创建一个feed,所有的数据都是放在sqlser
原文地址:http://www.codeproject.com/KB/webservices/SQLToXMLWebService.aspx
[翻译]通过WebService调用SQLXML(SQL Server 2005)
原文发布日期:2007.02.04 作者:Russ Quinn 翻译:webabcd 介绍 我最近需要给用户创建一个feed,所有的数据都是放在sqlserver数据库里的,所以我疯狂的查找把sqlserver里的数据转换成xml的最快速的方法。现在我知道了xml已经成为了sqlserver2005的一部分。 之后我萌生出了一个主意,就是创建一个webservice用于数据库转xml的服务,这样用户就可以在任何时候调用他们需要的数据(如果需要也可以传参数) 现在,我知道你将会说“这不是什么新东西也没有什么难度”,但这正是我写本文的目的,看完本文之后你会发现原来实现这个功能是如此简单。我不敢相信在CodeProject居然没有一个人提出这样的解决方法。 代码 首先,在你的sqlserver2005数据库(要有相关的数据)中创建如下存储过程
CREATE
PROCEDURE [dbo].[GetStories]
????????@fromDate datetime, ????????@toDate datetime AS???? ???????? BEGIN ???? ???????????????? select????dbo.Story.id, ????????????????????????????????description, ????????????????????????????????notes, ???????????????????????????????? text, ????????????????????????????????publicationdate, ????????????????????????????????authorsnames, ????????????????????????????????keywords ???????????????? from????????dbo.Story ???????????????????????????????? inner join dbo.Status on dbo.Story.StatusId = dbo.Status.id ???????????????? where???? publicationdate between @fromDate and @toDate ???????????????????????????????? and dbo.Status.status = 'live' ???????????????? order by publicationDate ???????????????? FOR???????? XML PATH( 'story'), ????????????????????????????????????????ROOT( 'stories') ???????? END
?
其关键的步骤就是“FOR XML PATH(###),ROOT(###)”这部分。他告诉sqlserver返回的xml每一行都要有名为“story”的节点,并且xml文档的根节点名为“stories”
下一步新建一个webservice,增加一个新的WebMethod。在这个方法中连接数据库并获得数据。 现在,调用SqlCommand类的ExecuteXmlReader方法以返回xml,类似如下代码
XmlReader reader = command.Command.ExecuteXmlReader();
这个reader就是一个XmlDataDocument流,它可以从WebMethod返回。下面是我写的一段WebMethod,我用了一个数据库帮助类App_Data.SqlSPCommand来获取数据库中的值。
?
就这些东西了
调用webservice就按我们通常做的方法就行,提供一些参数(本例中是两个日期类型)就可以返回xml,本例中返回的xml如下
<?
xml
version
="1.0"
encoding
="utf-8"
?>
< stories > ???????? < story > ???????????????? < id >514 </ id > ???????????????? < description >some description </ description >???? ???????????????? < notes >no notes available </ notes >???? ???????????????? < text >blah blah blah </ text >???? ???????????????? < publicationdate >2007-01-30T00:00:00 </ publicationdate >???? ???????????????? < authorsnames >Sue Williams </ authorsnames > ???????????????? < keywords >boring story </ keywords > ???????? </ story > </ stories >
?
就是如此简单,希望本文能对你有一些帮助
译者注:关于SQLXML的更多内容可以参看http://www.stylusstudio.com/sqlxml_tutorial.html译者注:感谢本页第三位留言的兄弟,他指出了本文的一个失误,“存储过程是2个参数,而code包括了3个参数”,但是文中的方法是没问题的,我已测试通过。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |