SqlServer操作XML学习
在 SQLServer2005 中对 XML 的处理功能显然增强了很多,提供了 query(),value(),exist(),modify(),nodes() 等函数。
关于 xml ,难以理解的不是 SQLServer 提供的函数,而是对 xml 本身的理解,看似很简单的文件格式,处理起来却是非常困难的。本文只是初探一下而已。
详见 SQLServer 联机帮助:
主题
说明
query() 方法( xml 数据类型)
此方法用于对 XML 实例进行查询。
value() 方法( xml 数据类型)
此方法用于从 XML 实例检索 SQL 类型的值。
exist() 方法( xml 数据类型)
此方法用于确定查询是否返回非空结果。
modify() 方法( xml 数据类型)
此方法用于指定 XML DML 语句以执行更新。
nodes() 方法( xml 数据类型)
此方法用于将 XML 拆分成多行以将 XML 文档的组成部分传播到行集中。
CREATE TABLE VisioXML
(
ID INT,
Doc XML
);
GO
INSERT INTO VisioXML(ID,Doc)
SELECT 4,* from OPENROWSET(BULK 'c:\abc.xml',SINGLE_BLOB) AS x;
--SELECT * from VisioXML WHERE ID=4
SELECT
--Doc.value('(/ROOT/ROW[1]/ID/text())[1]','int') RootRowID1, -- 第一行 ID 的值,并且转换为 int 类型
--Doc.value('(/ROOT/ROW[2]/ID/text())[1]','int') RootRowID2, -- 第二行 ID 的值,并且转换为 int 类型
--Doc.value('(/ROOT/ROW[1]/NAME/text())[1]','varchar(20)') RootRowNAME1, -- 第一行 NAME 的值,并且转换为 VARCHAR 类型
--Doc.value('(/ROOT/ROW[1]/NAME/@SEX)[1]','varchar(20)') RootRowNAME1SEX, -- 第一行 NAME 中 SEX 属性的值,并且转换为 VARCHAR 类型
Doc.query('/ROOT') Root, --ROOT 下的所有 XML 内容,类型为 XML
--Doc.query('/ROOT/ROW[1]') RootRow1, --ROOT 下第一行所有的 XML 内容,类型为 XML
Doc.query('/ROOT/ROW[2]') RootRow2 --ROOT 下第二行所有的 XML 内容,类型为 XML
from VisioXML
WHERE ID=4
SELECT
Doc.exist('/ROOT/ROW[1]/NAME[(@SEX cast as xs:string?) = xs:string("MALE")]') Row1EQStringMale,
Doc.exist('/ROOT/ROW[1]/NAME[(@SEX cast as xs:string?) = "MALE"]') Row1EQ
相关文档:
public partial class Form1 : Form
{
DataSet ds = new DataSet();
public Form1()
{
......
/*--存为XML
将表/查询存储为标准的XML文件
--*/
/*--调用示例
--用SQL用winows身份验证的情况
exec p_savexml @sql='地区资料',@fname='c:\地区资料.xml'
--用指定的用户
exec p_savexml @sql='地区资料',@fname='c:\地区资料.xml',@userid='sa'
--*/
if exists (select * from db ......
XMLDocument类提供了丰富的属性和方法,可以帮助我们轻松完成xml的编辑。但是,完成后的xml很多情况下可能还是需要以字符串形式传递。XMLDocument有个Save方法,不仅可以保存XML文件至磁盘,还能将其保存至指定的流,然后,就能从这个流(stream)读取所需要的字符串了。
XmlDocument doc = new XmlDocument();
...
.../ ......
方法一 :使用XML控件
<% @ Page Language="C#"%>
<html>
<body>
<h3><font face="Verdana">读取XML方法一</font></h3>
<from runat=server>
<asp:Xml id="xml1" DocumentSource="grade.xml" runat="server" />
</from>
</body>
</ ......
在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损坏,这时需要从数据库的备份中直接恢复。但是,此时会出现问题,这里说明几种常见问题的解决方法。
孤立用户的问题
比如,以前的数据库的很多 ......