原文地址:
http://www.codeproject.com/useritems/SQLToXMLWebService.asp
[翻译]通过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 译者注:感谢本页第三位留言的兄弟,他指出了本文的一个失误,“存储过程是2个参数,而code包括了3个参数”,但是文中的方法是没问题的,我已测试通过。
分享到:
相关推荐
调用Web Service在SQL Server中主要通过两种方式实现:T-SQL的XML方法和使用.NET Framework的存储过程。 1. **T-SQL的XML方法**: 使用T-SQL的内置函数如`OPENXML`、`sp_xml_preparedocument`和`sp_xml_...
总的来说,Android通过WebService连接SQLServer涉及到Android网络编程、服务器开发、数据库操作等多个方面,需要对这些技术有深入理解和实践经验。通过学习和实践,开发者可以创建出高效、稳定且安全的数据交互应用...
总结,SQL Server 2005调用WebService方法涉及到数据库与外部系统的集成、XML数据处理、存储过程编写等多个方面。通过合理运用这些技术,可以实现数据库系统与Web应用程序之间的紧密协作,提升整体系统的功能和效率...
本教程主要探讨如何在Android应用中通过WebService访问SQLServer数据库,实现数据的增、删、查操作。以下是相关知识点的详细说明: 1. **Android平台与Web服务的交互**: Android系统提供了多种方式与远程服务器...
在了解如何通过Sql Server触发器调用WebService之前,我们首先需要对触发器有一个基本的认识。触发器是一种特殊的存储过程,它被定义为当特定类型的事件(如INSERT、UPDATE或DELETE)发生在指定的表上时自动执行的一...
5. **处理返回的XML**:一旦WebService调用完成,服务器会返回一个XML响应。这个响应可以使用.NET中的`XmlDocument`类进行解析。`XmlDocument`提供了读取、操作和处理XML文档的方法。 6. **Default.aspx和Default....
这个项目旨在帮助开发者理解WebService的工作流程,通过C#编程语言,Visual Studio 2005(Vs2005)开发环境,以及SQL Server 2005数据库的使用来实现。 一、WebService简介 WebService是一种基于互联网的、平台无关...
- C#使用ADO.NET框架与SQL Server数据库进行通信。通过SqlConnection对象建立连接,SqlCommand对象执行SQL命令,SqlDataReader或DataTable用于读取结果集。 - 登录验证时,可能需要编写一个存储过程,检查用户输入...
本文将详细介绍如何在SQL Server 2005中调用Web Service,并通过具体的实例进行说明。 #### 背景与需求 随着企业应用越来越复杂,不同的系统之间需要频繁地交换数据和服务。Web Service作为一种开放标准,允许应用...
WebService是一种基于Web的服务交互技术,它允许不同系统之间通过网络进行数据交换和功能调用。在本案例中,“WebService远程访问SQLServer数据库源码”是一个实现了利用WebService来远程操作SQL Server数据库的应用...
1. 数据库访问:通过SOAP请求,客户端可以调用服务端的WebService,执行SQL查询或操作,如CRUD(创建、读取、更新、删除)数据库记录。 2. 数据交换:WebService返回的结果通常以XML格式,与SQL查询结果匹配,便于...
本篇文章将详细探讨如何在Android平台上通过WebService实现与SQL Server数据库的交互。 WeberService作为一种远程服务调用技术,常用于不同系统间的通信,而SOAP(Simple Object Access Protocol)协议是其中的一种...
在本场景中,我们将探讨如何通过WebService来调用数据库中的数据并以XML格式进行返回。 1. **XML基础**:XML全称为Extensible Markup Language,它是一种自定义标记语言,用于结构化地表示数据。XML文档由元素、...
Oracle 调用 Webservice 实现详解 本文将详细介绍 Oracle 调用 Webservice 的实现过程,包括 Webservice 的基本概念、 Java 编写简单的 WebService...通过本文,读者可以了解 Oracle 调用 Webservice 的详细实现过程。
SQL Server 作为一款广泛使用的数据库管理系统,也支持通过 T-SQL 或者 CLR(Common Language Runtime)集成的方式来调用 WebService,从而实现与其他系统的交互。本文将详细介绍如何在 SQL Server 中调用 ...
本文将深入探讨如何使用Android(Java)通过C#编写的Web服务访问SQL Server实例。 首先,我们要理解Web服务的基本概念。Web服务是一种基于互联网的,能够被其他应用程序(如Android应用)调用的接口。常见的Web服务...
综上所述,"java + webservice + sqlserver"项目涉及到了Java Web服务的开发、客户端调用、以及与SQLServer数据库的交互,这是一项综合性的技术实践,要求开发者具备Java编程、Web服务原理、数据库管理和调试技巧。...
三、SQL Server调用Web Service示例 在SQL Server中,可以使用OPENROWSET函数配合HTTP provider来调用Web Service。例如: ```sql DECLARE @XMLResponse XML EXEC @ReturnCode = sp_OACreate 'MSXML2.XMLHTTP', @...
【标签】"webservice-sqlserver java_webservice webservice__sgip wsdl_webservice_ wsdl.rar"进一步揭示了技术栈。"sqlserver"表明数据库管理是通过SQL Server完成的,这通常涉及到使用JDBC(Java Database ...