[翻译]通过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来获取数据库中的值。

[WebMethod(Description = "Get stories based on a centre, and a from and to date",
CacheDuration = 600, MessageName = "GetStoriesForCentre")]
public XmlDataDocument GetStoriesForCentre(string centre, DateTime fromDate, DateTime toDate)
{
 Database db = new Database("TarkStoriesConnectionString");
 
 using (db.Connection)
 {
  db.OpenConnection();
 
  App_Data.SqlSPCommand command = new App_Data.SqlSPCommand("GetStoriesForCentre", db.Connection);
  command.AddParameter("@centre", SqlDbType.VarChar, centre);
  command.AddParameter("@fromDate", SqlDbType.DateTime, fromDate);
  command.AddParameter("@toDate", SqlDbType.DateTime, toDate);

  XmlReader reader = command.Command.ExecuteXmlReader();
 
  XmlDataDocument xml = new XmlDataDocument();
  xml.Load(reader);

  return xml;
 }
}

就这些东西了

调用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

转载于:https://www.cnblogs.com/RobotTech/archive/2007/09/08/886823.html

通过WebService调用SQLXML(SQL Server 2005) [ZT]相关推荐

  1. 无法启动SQL Server 2005中的SQL Server(MSSQLSERVER)服务--zt

    原地址:http://blog.csdn.net/erway/archive/2007/08/07/1729230.aspx 问题:无法启动SQL Server 2005中的SQL Server(MS ...

  2. 胡百敬老师谈SQL Server 2005

    博文专访--与作者面对面 胡百敬老师谈SQL Server 2005 针对胡百敬老师的新书<SQL Server 2005数据库开发详解>的出版,博文视点对胡百敬老师进行了专访,以飨读者. ...

  3. ASP.NET 2.0在SQL Server 2005上自定义分页

    这篇文章讲述了如何利用SQL Server 2005的新特性来简单高效的实现分页.对于那些暂时还没用到SQL Server2005的人们,请看在大规模数据中的高效分页方法.如果需要,这篇文章会补上这里 ...

  4. 转:探讨SQL Server 2005的安全策略

    一.简介 SQL Server 2005是继SQL Server 2000之后的又一次重大成功.单从安全方面看,它在认证和授权方面比以往都有了大幅度的提高:同时,它还提供了本机加密支持-能够实现比以往 ...

  5. SQL Server 2005 连接本地端口1433开启远程连接/登陆18456错误的解决方法

    SQL Server 2005 连接本地端口1433开启远程连接/登陆18456错误的解决方法 出处:http://jimmyli.blog.51cto.com/我站在巨人肩膀上Jimmy Li 作者 ...

  6. T-SQL Enhancement in SQL Server 2005[上篇]

    较之前一版本,SQL Server 2005可以说是作出了根本性的革新.对于一般的编程人员来说,最具吸引力的一大特性就是实现了对CLR的寄宿,使我们可以使用任意一种.NET Programming L ...

  7. 无废话-SQL Server 2005新功能(1) - TSQL

    无废话-SQL Server 2005新功能(1) - TSQL SQL Server 2005相对于SQL Server 2000改进很大,有些还是非常实用的. 举几个例子来简单说明 这些例子我引用 ...

  8. 生成有关 SQL Server 2005 Analysis Services 多维数据集数据源的本地化报表

    引言 本文节选了 Brian Larson 所著的 Microsoft SQL Server 2005 Reporting Services 一书.学习如何通过参数化 MDX 查询将 Analysis ...

  9. SQL Server 2005 用户自定义函数

    (<SQL Server 2005 编程入门经典> 第13章) 用户自定义函数和存储过程非常相似,但它们也有一些行为和能力的区别. 13.1 UDF的定义 用户自定义函数是有序的T-SQL ...

最新文章

  1. 科研费4年翻3倍,全球科研队伍突破8000人,滴滴致力打造出行领域核心技术
  2. C#.NET学习笔记---C#中的条件编译
  3. 营销型网站吸引用户说难也难,说简单也简单
  4. shell两个时间字符串插值_Shell 脚本速成
  5. java期末考试2013及答案_java笔试经典(题及答案)2013.doc
  6. 2022年中国物联网行业研究报告
  7. 特斯拉部分车型将逐渐搭载磷酸铁锂电池,比亚迪有望成为其电池供应商
  8. 机器学习代码实战——SVM(支持向量机)(使用不同核函数)
  9. go - json -struct
  10. Gradle引入外部资源冲突问题,Gradle版本库冲突解决
  11. java.lang.IllegalStateException: Async support must be enabled on a servlet and for all filters invo
  12. torch随机数 manual_seed
  13. xvideos打开显示服务器出错,为什么打开xvideo显示网页
  14. [完全免费] 在线UML State Diagram 状态机图工具 - 教程第7部分
  15. #pragma once用法总结和链接错误
  16. 全新织梦DEDE CMS模板-精仿qq技术导航网站源码
  17. 前端八股文,https、跨域、闭包、原型链,布局、防抖节流等
  18. html5+css3笔记整理
  19. javascript 模板_了解JavaScript中的模板文字
  20. 做Web自动化前,你必会的几个技能

热门文章

  1. pytorch中tensor的unsqueeze()函数和squeeze()函数的用处
  2. 95页重磅报告:全面预测未来5年趋势
  3. 机器学习研究者必知的八个神经网络架构
  4. Facebook爆锤深度度量学习:该领域13年来并无进展!网友:沧海横流,方显英雄本色...
  5. 深度观察|工业物联网的应用场景和市场潜力
  6. MIT科学家Dimitri P. Bertsekas最新2019出版《强化学习与最优控制》(附书稿PDF讲义)...
  7. 智能交通大数据及云应用平台解决方案
  8. OpenAI最新研究:如何通过无监督学习提升「自然语言理解能力」?
  9. 周志华:严肃的研究者就不该去触碰强人工智能
  10. 伯克利人工智能研究院最新研究:协作型工业机器人如何更智能?