Download presentation
Presentation is loading. Please wait.
Published byHanna-Mari Uotila Modified 5年之前
1
第14章 在SQL Server 2005中 使用XML 14.1 XML概述 14.2 XML数据类型 14.3 存取XML格式的数据
14.4 本地XML Web服务器
2
使用OPENROWSET加载大容量XML 数据方法OPENXML函数的使用方法。
能力目标 如何定义和使用XML数据类型; 使用XQuery对XML数据查询方法; 使用OPENROWSET加载大容量XML 数据方法OPENXML函数的使用方法。
3
态度目标 团队精神; 态度积极; 任务按时完成; 出勤。
4
使用OPENROWSET加载大容量XML 数据方法。 难点:
重点难点 重点: 使用XQuery对XML数据查询方法; 使用OPENROWSET加载大容量XML 数据方法。 难点:
5
14.1 XML概述 1. XML文档结构 DTD(Document Type Declaration ,文档类型
声明)或XML Schema(XML大纲); XSL(eXtensible Stylesheet Language,可扩展 样式语言)或 CSS(Cascading Style Sheets ,级联 样式单); XLink(eXtensibel Link Language ,可扩展链 接语言)。
6
14.1 XML概述 2. 为XML文档编写样式单 FOO{display:block;font-size:24pt;font-weight:bold;} 3. 将样式单附加到XML 在XML文档中,<?xml-stylesheet type="text/css“ href=“greeting.css”?> 处理指令用于指定所要使用的样 式单。
7
14.2 XML数据类型 1. XML数据类型变量 使用Declare语句来声明XML类型的变量,语法 形式为:
变量,语法形式为: DECLARE @变量名 XML(XML架构集合名称)
8
14.2 XML数据类型 1. XML数据类型变量 SET @MyXmlVar = CAST(
‘<供应商><供应商编号>11011</供应商编号><供应商>青联外贸进出口公司</供应商> <联系人>刘阳小姐</联系人> <联系人职务>业务</联系人职务> <地址>青岛经济技术开发区香江路128号</地址> <城市>青岛市</城市> <行政区>经济技术开发区</行政区> <邮政编码>266555</邮政编码> <电话>(0532) </电话> <传真电话>(0532) </传真电话> </供应商>' AS xml); --显示变量所拥有的值
9
14.2 XML数据类型 2. XML数据类型列 在创建表时,可以像使用其他内置类型那样使用 XML数据类型作为列类型。
在创建表时,可以像使用其他内置类型那样使用 XML数据类型作为列类型。 CREATE TABLE Providor(编号 INT PRIMARY KEY, 供应商信息 XML); GO -- 添加数据记录 INSERT INTO Providor VALUES (1, CAST( ‘<供应商><供应商编号>11011</供应商编号><供应商>青联外贸进出口公司</供应商> <联系人>刘阳小姐</联系人> <联系人职务>业务</联系人职务> <地址>青岛经济技术开发区香江路128号</地址> <城市>青岛市</城市> <行政区>经济技术开发区</行政区> <邮政编码>266555</邮政编码> <电话>(0532) </电话> <传真电话>(0532) </传真电话> </供应商>' AS xml) );
10
14.2 XML数据类型 3. 查询XML类型数据 【案例14.1】使用query ()方法对XML数据类型进行查询。
SELECT 供应商信息.query(‘/供应商/联系人’) FROM Providor;
11
14.3 存取XML格式的数据 1. 使用FOR XML构造XML 【案例14.2】使用RAW模 式,查询前3条订单信息。 FOR XML
{ {RAW[('ElementName')] | AUTO} [<CommonDirectives>[, ELEMENTS[XSINIL | ABSENT]]] | EXPLICIT[<CommonDirectives>] | PATH[('ElementName')] } <CommonDirectives>::= [, TYPE] [, ROOT[('RootName')]] USE eTradeInfo GO SELECT TOP 3 Order_ID, Order_date, Customer, Enddate FROM Customers INNER JOIN Sales ON Sales.Cust_ID=Customers.Cust_ID FOR XML RAW
12
14.3 存取XML格式的数据 2. 使用OPENXML将XML文档转化为表 OPENXML语法格式如下:
OPENXML(idoc int [in], rowpattern nvarchar[in], [flags byte[in]]) [WITH(SchemalDeclaration|TableName)]
13
14.3 存取XML格式的数据 2. 使用OPENXML将XML文档转化为表 Declare @iDoc int
varchar(1000) <Root> <Goods GId="21" GName="Netcard" Storage="100" Price="250"/> <Goods GId="22" GName="Monitor" Storage="200" Price="1500"/> <Goods GId="23" GName="Floppy" Storage="300" Price="80"/> </Root>' Exec Select * From '/Root/Goods',0) With(GId smallint, GName varchar(20), Storage int, Price money )
14
14.4 本地XML Web服务器 1. SQL Server 2005 Database Engine中提供本机 XML Web服务
超文本传输协议(HTTP) SOAP Web服务定义语言(WSDL) 本机XML Web服务示意图 本机XML Web服务工作模式
15
14.4 本地XML Web服务器 2. 配置本机XML Web服务 Step1:创建和管理端点
使用以下Transact-SQL语句创建和管理端点 : CREATE ENDPOINT 用于创建端点、定义客户端应用程序可以用来 向端点发送, HTTP SOAP 请求的方法以及设置身 份验证和指定端口。 ALTER ENDPOINT 用于添加、删除或修改方法,或更改端点选项。 DROP ENDPOINT
16
14.4 本地XML Web服务器 2. 配置本机XML Web服务 Step 2:端点权限和身份验证
对于SQL Server 2005中的本机XML Web服务, 可以使用以下两种类型的安全体之一来管理安全性: (1)Windows用户或/和组账户 (2)SQL Server登录账户 Windows 账户用于 HTTP 端点身份验证时,不 需要另外使用 SOAP 身份验证标头。
17
14.4 本地XML Web服务器 3. 应用本地XML Web服务器 Step 1:创建SOAP USE eTradeInfo GO
CREATE FUNCTION CountCustomers() RETURNS int AS BEGIN RETURN (SELECT COUNT(Cust_Id) FROM Customers) END
18
14.4 本地XML Web服务器 3. 应用本地XML Web服务器 Step 2:创建端点以用于SOAP请求
CREATE ENDPOINT sql_endpoint STATE=STARTED AS HTTP( PATH='/sql', AUTHENTICATION=(INTEGRATED), PORTS=(CLEAR), SITE='SQLSVR2005' ) FOR SOAP(WEBMETHOD 'CountCustomers ' (name='eTradeInfo.dbo.CountCustomers '), WSDL=DEFAULT, SCHEMA=STANDARD, DATABASE='eTradeInfo', NAMESPACE=' );
19
14.4 本地XML Web服务器 3. 应用本地XML Web服务器 Step 3:创建客户端项目
20
Management Studio”管理窗口中,完成代码调试。
案例分析 使用案例数据库 eTradeInfo,在 “ SQL Server Management Studio”管理窗口中,完成代码调试。 1. 声明一个XML类型变量并将XML实例分配给它。 2. 分别使用AUTO和RAW模式,查询前 5 条客户订购 产品的信息。 3. XML 实 例分配给它,然后使用query()方法对XML实例进行查询。 4. 使用 OPENXML 语句将上述 XML 文档中的数据添 加到图书信息表中。 5. 使用 OPENXML 语句将上述 XML 文档的对象树转 化为表的形式显示出来。
21
要求: 问题: 讨论: 2. 掌握使用XQuery对XML数据查询方法 3. 掌握使用OPENROWSET加载大容量XML数据方法
案例分析 要求: 1. 掌握定义和使用XML数据类型 2. 掌握使用XQuery对XML数据查询方法 3. 掌握使用OPENROWSET加载大容量XML数据方法 4. 掌握OPENXML函数的使用方法 问题: 1. 在SQL Server中XML数据类型是一种结构化的数据 吗?为什么? 2. 如何存储XML数据对象? 讨论: 如何将SQL Server数据库中的XML文档通过Web发布?
22
通过SQL Server实现了对XML文档和数据的存 储与查询。XML数据可以与SQL Server应用程序进
本章小结 通过SQL Server实现了对XML文档和数据的存 储与查询。XML数据可以与SQL Server应用程序进 行互操作, SQL Server 还提供了管理 XML 数据的 功能,支持XML数据类型。 在服务器上, XML 数据可以从表生成,并通 过在 SELECT 语句中使用 FOR XML子句来查询结 果;在客户端,SQL Server 对客户端编程的支持称 为 SQLXML,这项技术的核心是 XML视图,它实 现XML架构和关系表之间的双向映射。 SQL Server 2005 提供了本机 XML Web服务, 实现 Web 应用程序对SQL Server的访问。
Similar presentations