SQL Server2000 数据表导出XML方法

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 是本地服务器时,该查询返回:
<Northwind.dbo.Employees LastName="Buchanan"/>
B.当 ServerName 是网络服务器时,该查询返回:
<ServerName.Northwind.dbo.Employees LastName="Buchanan"/>
以上的问题,通过指定别名可避免上述现象:
SELECT TOP 1 LastName ROM ServerName.Northwind.dbo.Employees x FOR XML AUTO 
该查询返回:<x ="Buchanan"/>
  • 在带 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,内容为:

<?xml version="1.0" standalone="yes"?>
<DataSet1 xmlns="http://www.tempuri.org/DataSet1.xsd">
<%begindetail%>
<%insert_data_here%>
<%enddetail%>
</DataSet1>

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
 
    
    
 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值