网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.让界面更加绚丽 Java SE 6.0 GUI.
.Linux + Java = Lava(岩浆)?.
.走出abstract class与interface的.
.实例论证J2ME的事件传输机制.
.用JSTL标签访问list且判断list的.
.Mobile Java 3D(JSR-184)集成快照.
.Java核心代码例程之:Properties.
.Hibernate 能够满足我们的验证需.
.[JAVA100例]009、异常的捕获和实.
.Java语言编程技术中汉字问题的分.
.eclipse技巧 --熱鍵篇.
.实现Java平台的三种方式.
.Java开发框架:深入分析JSF与Str.
.hasOwnProperty 方法.
.spring 2.0 的事务自动处理.
.软件开发成功12法则.
.针对hibernate,jdbc,sql的思考.
.用JBuilder9 开发Struts实例.
.检测代码是否有Junit Test Class.
.对《Java与模式》中工厂方法模式.

深入探讨SQL Server 2000对XML的支持(二)

发表日期:2008-1-5



  使用我们刚才创建的虚拟目录,我们就可以通过把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了以外,其它都没有变化。

  上面我们说的是直接使用HTTP中执行简单的查询,除此之外你还可以执行更加复杂的查询,比如说连接不同的表进行查询,请看下面的例子,在下例中,SELECT 语句连接了 Northwind 数据库的中的 Customers 和 Orders 表,并返回信息。

http://localhost/northwind?sql=SELECT
Customer.CustomerID%2cCustomer.Contact
Name%2c%5bOrder%5d.OrderID+FROM+Customers+
Customer+INNER+JOIN+Orders+%5bOrder%
5d+ON+Customer.CustomerID%3d%5bOrder%
5d.CustomerID+FOR+XML+AUTO&root=Northwind


因为返回的XML文件太长,我就不把它列出来了。

  假如你不想在Customers表和Orders表中出现嵌套的话,SQL Server 2000还提供另一个要害字用来替代AUTO,这个要害字就是RAW。RAW 模式将查询结果集中的每一行转换为带有类属标识符 row 的 XML 元素。为了让您能够深入了解RAW,我再给出一个例子:使用 RAW 模式检索客户和订单信息

  下面的查询返回客户和订单信息。在 FOR XML 子句中指定 RAW 模式。


SELECT Customers.CustomerID, Orders.OrderID, Orders.OrderDate
FROM Customers, Orders
WHERE Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerID
FOR XML RAW


  下面是部分结果:

<row CustomerID="ALFKI" OrderID="10643" OrderDate="1997-08-25T00:00:00"/>

<row CustomerID="ANATR" OrderID="10308" OrderDate="1996-09-18T00:00:00"/>

<row CustomerID="ANATR" OrderID="10625" OrderDate="1997-08-08T00:00:00"/>

<row CustomerID="AROUT" OrderID="10355" OrderDate="1996-11-15T00:00:00"/>


  可以使用外部联接指定上面的查询在结果集中返回所有客户,无论这些客户是否有订单。


   SELECT C.CustomerID, O.OrderID, O.OrderDate
     FROM Customers C LEFT OUTER JOIN Orders O ON C.CustomerID = O.CustomerID ORDER BY C.CustomerID FOR XML RAW


  下面是部分结果:


<row CustomerID="BONAP" OrderID="11076" OrderDate="1998-05-06T00:00:00"/>

<row CustomerID="FISSA"/>

<row CustomerID="PARIS"/>

<row CustomerID="RICSU" OrderID="11075" OrderDate="1998-05-06T00:00:00"/>



  我们还可以使用 HTTP 执行存储过程,比如下面这个名为GetXML的存储过程:


  CREATE PROCEDURE GetXml
   (
    @CustomerID varchar(5)
   )
   AS
    BEGIN
     SELECT CustomerID, CompanyName,ContactName
      FROM Customers
      WHERE CustomerID LIKE @CustomerID + '%'
      FOR XML AUTO
  END


  为了执行这个存储过程并传送相应的参数,我们可以使用下面这段URL,http://localhost/northwind?sql=exec+GetXml+'A'&root=root。这样,我们就能够在更高一层次使用存储过程,并且可以根据最终用户想要得到的结果动态的改变参数值(比如在本例中,我们用的是“A”)。
上一篇:深入探讨SQL Server 2000对XML的支持(三) 人气:412
下一篇:深入探讨SQL Server 2000对XML的支持(一) 人气:509
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐