使用SQL Server 2000将现有代码作为Web服务提供

2016-02-19 17:44 3 1 收藏

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的使用SQL Server 2000将现有代码作为Web服务提供,过去的都会过去,迎接崭新的开始,释放更美好的自己。

【 tulaoshi.com - 编程语言 】

  一、简介

  Microsoft SQL Server 2000的 XML功能可以简化将现有代码作为 Web服务提供的任务。本文集中讨论了传入和传出 Transact SQL代码的数据与 XML消息(在 Web服务客户机和服务器之间使用)之间的转换。

  二、SQL Server 2000中的现有代码

  SQL Server 2000的 XML功能简化了将现有 Transact SQL代码作为 Web服务提供的过程。这依赖于 SQL Server 2000中的两项 XML功能:

  1.对 Transact SQL的扩展可将关系型数据转换为 XML,并且可以对传入的 XML进行语法分析。利用 ISAPI模板功能,可将传入的 HTTP请求应用于 Transact SQL代码,并且可以使用 XSL样式表对传出的 XML进行转换。只要可以使用 FOR XML子句选定数据,SQL Server就可以将 XML返回到 XML模板。

  2.SQL Server 2000 XML模板

  SQL Server 2000 XML模板以透明方式执行以下任务:

  对传入的 HTTP请求进行解码将参数应用于 Transact SQL查询执行查询使用 XSL转换传出的 XML读数据以下示例执行 ISAPI模板中指定的 Transact SQL。如果必要,可将 HTTP请求传递到 Transact SQL代码,并由该代码进行语法分析。根据模板中指定的 .xsl文件,返回的 XML将被转换为 SOAP并返回给 Web服务的客户:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  

Exec GetOrdersXML以下是模板中引用的 XSL样式表,它将存储过程中的 XML转换为 SOAP:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:m="Some-URI"

  最后,以下存储过程代码在 Transact SQL SELECT语句中使用 FOR XML EXPLICIT子句来返回 XML。订单和订单详细信息从单独的表中选择,然后合并到 XML层次中:

  /*订单是父 XML元素 */

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  

Select 1 as Tag, NULL as Parent,Orders.OrderId AS [Order!1!OrderId],Orders.OrderStatus AS [Order!1!OrderStatus],Orders.OrderDate AS [Order!1!OrderDate],Orders.SubTotal AS [Order!1!SubTotal],Orders.Tax AS [Order!1!Tax],Orders.ShippingHandling AS [Order!1!ShippingHandling],Orders.ShipToName AS [Order!1!ShipToName],Orders.ShipToAddressId AS [Order!1!ShipToAddressId],NULL AS [OrderDetail!2!OrderDetailId],NULL AS [OrderDetail!2!OrderId],NULL AS [OrderDetail!2!ItemId],NULL AS [OrderDetail!2!UnitPrice],NULL AS [OrderDetail!2!Quantity]from OrdersUNION ALL

  /*订单详细信息是子 XML元素 */

  

select 2 as tag, 1 as parent,Orders.OrderId AS [Order!1!OrderId],NULL AS [Order!1!OrderStatus],NULL AS [Order!1!OrderDate],NULL AS [Order!1!SubTotal],NULL AS [Order!1!Tax],NULL AS [Order!1!ShippingHandling],NULL AS [Order!1!ShipToName],NULL AS [Order!1!ShipToAddressId],OrderDetails.OrderDetailId AS [OrderDetail!2!OrderDetailId],OrderDetails.OrderId AS [OrderDetail!2!OrderId],OrderDetails.ItemId AS [OrderDetail!2!ItemId],OrderDetails.UnitPrice AS [OrderDetail!2!UnitPrice],OrderDetails.Quantity AS [OrderDetail!2!Quantity]from Orders, OrderDetailswhere Orders.OrderId = OrderDetails.OrderIdORDER BY [Order!1!OrderId],[OrderDetail!2!OrderDetailId]For XML EXPLICIT 写数据。

  以下示例中,通过 HTTP请求提供表示层次行数据的 XML,然后将其传递到 ISAPI模板中指定的 Transact SQL代码。在存储过程中对 XML进行语法分析,并进行相应的写入操作:

  

Create Procedure InsertOrder@Order NVARCHAR(4000) = NULL,@OrderId int OutputDECLARE @hDoc INTDECLARE @PKId INTBEGIN TRANSACTION

/*将 XML载入文档以进行分析 */

  

EXEC sp_xml_preparedocument @hDoc OUTPUT, @Order

  /*插入订单标头 */

  

INSERT Orders(CustomerId,OrderDate,ShipToName,ShipToAddressId,OrderStatus)SELECT *FROM OPENXML(@hDoc, '/NewDataSet/Orders')WITH ( CustomerId int 'CustomerId',OrderDate Datetime 'OrderDate',ShipToName nvarchar(40) 'ShipToName',ShipToAddressId int 'ShipToAddressId',OrderStatus int 'OrderStatus')SELECT @PKId = @@IDENTITY

  /*插入订单详细信息 */

  

INSERT OrderDetails (OrderId,ItemId,UnitPrice,Quantity)SELECT @PKId as OrderId, ItemId, UnitPrice, QuantityFROM OPENXML(@hDoc, '/NewDataSet/Details')WITH ( ItemId int 'ItemId',UnitPrice money 'UnitPrice',Quantity int 'Quantity')

  /*指定输出参数的值 */

  

Select @OrderId = @PKIdCOMMIT TRANSACTION

  /*清除 XML文档 */

  

EXEC sp_xml_removedocument @hDoc

来源:http://www.tulaoshi.com/n/20160219/1615945.html

延伸阅读
标签: SQLServer
  Microsoft SQL Server 2000的数据转换服务(中) 还可以用编程方式创建自定义任务,然后使用“注册自定义任务”命 令将其集成到 DTS设计器中。 为说明如何使用这些任务,这里显示一个简单的 DTS软件包,其中包 括两项任务: Microsoft ActiveX?脚本任务以及发送邮件任务: 图 2. 具有两项任...
1.在查询分析器理启动或停止SQL Agent服务 启动 use master go xp_cmdshell 'net start SQLSERVERAGENT' 停止 use master go xp_cmdshell 'net stop SQLSERVERAGENT' 将服务的启动从手工方式改为自动启动方式 exec xp_cmdshell 's...
标签: SQLServer
由于XML本身的诸多优点,XML技术已被广泛的使用,目前的好多软件技术同XML紧密相关,比如微软的。net 平台对xml提供了强大的支持,提供System.Xml以及其子命名空间下的类型来操作xml.Ado.net通过核心类型DataSet出色的把关系型数据库同xml进行了紧密集成。由于平常许多开发人员使用。net 来操作Sql server的到数据集后再转换成xml,所以往往忽略...
标签: ASP
  微软SQL Server数据库服务器能够在SQL数据库里保存图片和大量的文本。图片和文本使用的数据类型分别是image图 片类型和text文本类型。假如使用VB或VC开发前端应用程序,在windows操作系统上运行,那么可以容易地从SQL数据库里 提取图片数据,把它放入一个文件,并在屏幕上显示出来。但是,要是想从SQL Server得到图片,并在Web浏览器里...
标签: ASP
  建立ActiveX 动态链接库     使用 VB 5.0,我们要开发一个ActiveX 动态链接库。这个动态链接库让我们能够连接到SQL数据库,提取图片数据, 并把它们保存成文件,放在目录里。要建立动态链接库,请在打开VB程序之后执行下列步骤:首先:在文件(File)菜单 里,选择新建项目(New Project)。接着,在新建立项目对...

经验教程

114

收藏

54
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部