鸳鸯佩电视剧全集:SQL Server2000 数据表导出XML方法

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 10:19:39

SQL Server2000 数据表导出XML方法

1.        For XML 语句

1)语法:

FOR XML mode [, XMLDATA] [, ELEMENTS][, BINARY BASE64]

2)参数:

l   XML mode

指定 XML 模式。XML 模式决定所得到的 XML 的形式。

mode 可以是 RAW、AUTO 或 EXPLICIT。

l XMLDATA
指定应返回 XML-Data 架构。文档的架构被预先设计为内嵌式架构。

l   ELEMENTS
如果指定 ELEMENTS 选项,则列作为子元素返回。否则,列将映射到 XML 特性。只有在 AUTO 模式下才支持该选项。

l   BINARY BASE64
如果指定 BINARY Base64 选项,则查询所返回的任何二进制数据都用base64 编码格式表示。使用 RAW 和 EXPLICIT 模式检索二进制数据时,必须指定该选项。在 AUTO 模式中,默认情况下将二进制数据作为引用返回。

2.        FOR XML 子句的使用准则

l   无论在 UPDATE、INSERT 或 DELETE 语句、嵌套 SELECT 语句还是其它语句(SELECT INTO、赋值语句)中,FOR XML 在子选择中都无效。例如
例1:SELECT * FROM Table1
WHERE ......(SELECT * FROM Table2 FOR XML RAW)
例2:DECLARE @doc nchar(3000)
SET @doc = (SELECT * FROM Customers WHERE CustomerID = 'ALFKI' FOR XML RAW)

l   对于与 COMPUTE BY 或 FOR BROWSE 子句一起使用的任何选择语句,FOR XML 都无效,例如:
例1:SELECT OrderID, UnitPrice FROM [Order Details]
ORDER BY OrderID COMPUTE SUM(UnitPrice) BY OrderID

当前不支持 GROUP BY 和聚合函数与 FOR XML AUTO 共同使用。例如:
例1:SELECT max(price), min(price), avg(price) FROM titles FOR XML AUTO

l   FOR XML 在用于视图定义或用于返回行集的用户定义函数的 SELECT 语句中无效。
下面的语句无效:
CREATE VIEW AllOrders AS SELECT * FROM Orders FOR XML AUTO
下面的语句可行:
SELECT * FROM ViewName FOR XML AUTO are allowed

l   FOR XML 无法用于需要在存储过程中进一步处理的选择语句。
l   FOR XML 不能与游标一起使用。
l   一般情况下,FOR XML 无法不能不直接将结果输出到SQL Server 2000 客户端的任何选择语句。
l   FOR XML 无法用于在 INSERT 语句中调用的存储过程。
l   如果带 FOR XML 子句的 SELECT 语句在查询中指定一个由四部分组成的名称,则在本地计算机上执行查询时,在所得到的 XML 文档中将不返回这个服务器名称。但是,当在网络服务器上执行查询时,将返回这个由四部分组成的服务器名称。
例如:当使用下面的语句查询:
SELECT TOP 1 LastName FROM ServerName.Northwind.dbo.Employees FOR XML AUTO
A.当 ServerName 是本地服务器时,该查询返回:

B.当 ServerName 是网络服务器时,该查询返回:

以上的问题,通过指定别名可避免上述现象:
SELECT TOP 1 LastName ROM ServerName.Northwind.dbo.Employees x FOR XML AUTO
该查询返回:

在带 FOR XML   AUTO 子句的 SELECT 语句中使用派生表可能不会产生希望的嵌套。

3.        sp_makewebtask

创建一项生成 HTML 文档的任务,该文档包含执行过的查询返回的数据。

语法

sp_makewebtask [@outputfile =] 'outputfile', [@query =] 'query'
     [, [@fixedfont =] fixedfont]
     [, [@bold =] bold]
     [, [@italic =] italic]
     [, [@colheaders =] colheaders]
     [, [@lastupdated =] lastupdated]
     [, [@HTMLheader =] HTMLheader]
     [, [@username =] username]
     [, [@dbname =] dbname]
     [, [@templatefile =] 'templatefile']
     [, [@webpagetitle =] 'webpagetitle']
     [, [@resultstitle =] 'resultstitle']
     [ [, [@URL =] 'URL', [@reftext =] 'reftext']
        | [, [@table_urls =] table_urls, [@url_query =] 'url_query']
     ]
     [, [@whentype =] whentype]
     [, [@targetdate =] targetdate]
     [, [@targettime =] targettime]
     [, [@dayflags =] dayflags]
     [, [@numunits =] numunits]
     [, [@unittype =] unittype]
     [, [@procname =] procname ]
     [, [@maketask =] maketask]
     [, [@rowcnt =] rowcnt]
     [, [@tabborder =] tabborder]
     [, [@singlerow =] singlerow]
     [, [@blobfmt =] blobfmt]
     [, [@nrowsperpage =] n]
     [, [@datachg =] table_column_list]
     [, [@charset =] characterset]
     [, [@codepage =] codepage]

参数

[@outputfile =] 'outputfile'

在 Microsoft SQL Server的实例上生成的 HTML 文件的位置。如果文档将在远程计算机上生成,则该参数可以是 UNC 名称。outputfile 的数据类型为 nvarchar(255),没有默认值。

[@query =] 'query'

要运行的查询。query 的数据类型为 ntext,没有默认值。当通过 sp_runwebtask 运行任务时,查询结果将以表格形式显示在 HTML 文档中。可以指定多个 SELECT 查询,从而导致在 outputfile 中显示多个表。

[@fixedfont =] fixedfont

指定查询结果是以固定字体 (1) 还是以成比例字体 (0) 显示。fixedfont 的数据类型为 tinyint,默认值为 1。

[@bold =] bold

指定查询结果是以粗体 (1) 还是非粗体 (0) 显示。bold 的数据类型为 tinyint,默认值为 0。

[@italic =] italic

指定查询结果是以斜体 (1) 还是非斜体 (0) 显示。italic 的数据类型为 tinyint,默认值为 0。

[@colheaders =] colheaders

指定查询结果是带列标题 (1) 还是不带列标题 (0) 显示。colheaders 的数据类型为 tinyint,默认值为 1。

[@lastupdated =] lastupdated

指定所生成的 HTML 文档是否显示"上次更新时间:"时间戳指示上次更新的日期和时间 (1) 或者没有时间戳 (0)。在 HTML 文档中,时间戳出现在查询结果的前一行。lastupdated 的数据类型为 tinyint,默认值为 1。

[@HTMLHeader =] HTMLHeader

指定用于显示包含在 resultstitle 中的文本的 HTML 格式代码。HTMLheader 的数据类型为 tinyint,可以是下列值之一。

值 HTML 格式代码

1 H1

2 H2

3 H3

4 H4

5 H5

6 H6

[@username =] username

是执行查询的用户名。username 的数据类型为 nvarchar (128),默认设置为当前用户。系统管理员或数据库所有者可以指定其它用户名。

[@dbname =] dbname

在其上运行查询的数据库名。dbname 的数据类型为 nvarchar(128),默认值为当前数据库。

[@templatefile =] 'templatefile'

用于生成 HTML 文档的模板文件的路径。模板文件包含 HTML 文档的格式特征信息和标记 <%insert_data_here%>,该标记指示将查询结果添加到 HTML 表中的位置。templatefile 的数据类型为 nvarchar(255)。

4.        导出XML实例

1)新建一个模板文件TEMPXML.tmp,内容为:


http://www.tempuri.org/DataSet1.xsd">
<%begindetail%>
<%insert_data_here%>
<%enddetail%>

2)在查询分析器中执行SQL语句:

Use Northwind                           --此处可以修改为相应的数据库名
GO
--通过系统存储过程sp_makewebtask,将查询结果导出为XML文件C:\Test.xml
EXEC sp_makewebtask
      @outputfile = 'C:\Test.xml',
@query = 'Select Top 5 * From EC_Student for XML Auto,ELEMENTS',
@templatefile ='C:\TEMPXML.tmp'

3)利用.NET读取XML文件:

A.在窗体中创建一个DataGrid,一个按钮Button
B.在按钮事件中输入以下内容:
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

         DataSet1.ReadXml("C:\Test.XML")

         Dim tb As DataTable

         Dim dv As DataView

         tb = DataSet1.Tables(0)

         dv = New DataView(tb)

         DataGrid1.DataSource = dv

   End Sub