科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道[SQL Server]探讨SQL2000对XML的支持(2)

[SQL Server]探讨SQL2000对XML的支持(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

我们可以很简单的使用ADO访问数据库中的数据,但是,如果我们想把从数据库中检索得到的数据以XML的格式显示出来的话,就要费点神了,当然,我们可以去找一些现成的应用程序或者是把现有的存储过程修改一下,来完成这个想法。

作者:Wayne 来源:csdn.net 2007年9月15日

关键字: XML 数据库 SQL Server

  • 评论
  • 分享微博
  • 分享邮件
好,让我们开始配置过程吧!

  在"SQL Server 工具"程序组中单击"在 IIS 中配置 SQL XML 支持",这时就会出现一个与IIS管理器相似的界面。展开服务器,选取默认的 Web 站点,点右键,在弹出的菜单中选取“新建”选项,然后单击"虚拟目录"命令。新虚拟目录的属性页将显示在屏幕上。在"新的虚拟目录属性"对话框的"常规"选项卡上,输入虚拟目录的名称,在本例中,请输入Northwind和物理目录路径(例如 C:\Inetpub\Wwwroot\Northwind,假设在 C:\Inetpub\Wwwroot 目录中已创建了 Northwind子目录),当然我们也可以使用“浏览”按钮选择目录。在“安全性”选项卡上,填入有效的 SQL Server 登录信息,在进入下一个选项卡时,它将要求你确认刚才输入的密码。在“数据源”选项卡上,在“SQL Server”框中输入服务器的名称,在“数据库”框中,输入 Northwind 作为默认数据库的名称。在"设置"选项卡上,你可以选择“允许 URL 查询”、“允许模板查询”、“允许 XPath”和“允许 POST”选项。

  在构建一个应用程序时,你不但要考虑到能够访问到SQL Server数据库,要有足够的安全级别以保证你的数据的安全性。在“虚拟名称”选项卡上,你可以更具自己的需要选择新建模板类型(template)、架构类型(schema)和模板和架构类型(dbonject),并创建它们的路径。好,我们这样就创建了虚拟目录 Northwind。默认情况下,使用该虚拟目录对 Northwind 数据库执行指定的查询。你一定迫不及待的吸纳高看看执行SQL的结果是什么样的了吧?好,让我们在浏览器中输入http://localhost/northwind?sql=SELECT * FROM CUSTOMERS FOR XML AUTO&root=root,试验一下吧!

  我们还可以编程来实现配置SQL Server 2000的IIS虚拟目录,请见下面的代码:

  Set ObjXML = CreateObject("SQLVDir.SQLVDirControl")

  ObjXML.Connect 'Connect to the local computer and Web site "1"

  Set ObjVDirs = ObjXML.SQLVDirs

  Set ObjVDir = ObjVDirs.AddVirtualDirectory("Northwind")

  ObjVDir.PhysicalPath = "C:\Inetpub\wwwroot\northwind"

  ObjVDir.UserName = "wayne" 'SQL Server login

  ObjVDir.Password = "" 'SQL Server Password

  ObjVDir.DatabaseName = "Northwind"

  objVDir.AllowFlags = 73

  Set objVNames = objVDir.VirtualNames

  objVNames.AddVirtualName "dbobject", 1, ""

  objVNames.AddVirtualName "schema", 2,"C:\Inetpub\wwwroot\northwind\schema"

  objVNames.AddVirtualName "template", 4 , "C:\Inetpub\wwwroot\northwind\template"

  objXML.Disconnect

  msgbox "Done."


  二、使用 HTTP 执行 SQL 语句

  使用我们刚才创建的虚拟目录,我们就可以通过把SQL查询语句写入URL的方式执行查询。打开浏览器,在地址栏中写入以下URL:http://localhost/northwind?sql=SELECT+ *+FROM+Customers+WHERE+CustomerID='ANTON' +FOR+XML+AUTO&root=root,如果你使用的虚拟目录别名不是Northwind或者你使用一个远程服务器,只需要把相应的值改掉就可以了。

  浏览器中会出现:

<?xml version="1.0" encoding="utf-8" ?>
<root>
<Customers CustomerID="ANTON" CompanyName="Antonio Moreno Taquería" ContactName="Antonio Moreno" ContactTitle="Owner" Address="Mataderos 2312" City="México D.F." PostalCode="05023" Country="Mexico" Phone="(5) 555-3932" />
</root>


  让我们来分析一下这个URL,“http://localhost/northwind”后面跟了一个SQL查询语句,用来执行查询数据库Northwind的任务。在本例中,我们使用的查询语句是“SELECT+*+FROM+Customers+WHERE+CustomerID='ANTON'”。请注意,这条语句已经被URL编码过了,其中的空格都被替换成加号“+”,这样它才能被浏览器正确的传送到数据库中去,关于URL编码格式请您参阅相关文档。

  在查询语句之后,有添加了两个新的关键字:FOR XML和AUTO。FOR XML关键字可以对现有的关系数据库执行 SQL 查询,以返回 XML 文档形式。AUTO模式则将查询结果作为嵌套 XML 元素返回,在 FROM 子句内,每个在 SELECT 子句中至少有一列被列出的表都表示为一个 XML 元素,SELECT 子句中列出的列映射到适当的元素特性,当指定了 ELEMENTS 选项后,表列映射到子元素而非特性。默认情况下,AUTO 模式将表列映射到 XML 特性。

  在FOR XML AUTO后,还需要添加一个参数“root”,其参数值作为返回的XML文件的root元素名。比如说,你可以把上面我给出的例子中的root的参数值设为Northwind,你会发现,返回的XML文件中除了root元素名变为Northwind了以外,其它都没有变化。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章