This Domain(Admin5.com) is for Sale:

深入探讨SQLServer 2000对XML的支持

时间:2007-12-23  来源:不详  作者:迈克DB

  SELECTCustomers.CustomerID,Orders.OrderID,Orders.OrderDate
  FROMCustomers,Orders
  WHERECustomers.CustomerID=Orders.CustomerID
  ORDERBYCustomers.CustomerID
  FORXMLRAW
 下面是部分结果:
  <rowCustomerID="ALFKI"OrderID="10643"OrderDate="1997-08-25T00:00:00"/>
  <rowCustomerID="ANATR"OrderID="10308"OrderDate="1996-09-18T00:00:00"/>
  <rowCustomerID="ANATR"OrderID="10625"OrderDate="1997-08-08T00:00:00"/>
  <rowCustomerID="AROUT"OrderID="10355"OrderDate="1996-11-15T00:00:00"/>
 可以使用外部联接指定上面的查询在结果集中返回所有客户,无论这些客户是否有订
  SELECTC.CustomerID,O.OrderID,O.OrderDate
 FROMCustomersCLEFTOUTERJOINOrdersOONC.CustomerID=
O.CustomerID ORDERBYC.CustomerID FORXMLRAW
 下面是部分结果:
  <rowCustomerID="BONAP"OrderID="11076"OrderDate="1998-05-06T00:00:00"/>
  <rowCustomerID="FISSA"/>
  <rowCustomerID="PARIS"/>
  <rowCustomerID="RICSU"OrderID="11075"OrderDate="1998-05-06T00:00:00"/> dedecms.com
 我们还可以使用HTTP执行存储过程,比如下面这个名为GetXML的存储过程:
 CREATEPROCEDUREGetXml
  (
@CustomerIDvarchar(5)
  )
  AS
BEGIN
 SELECTCustomerID,CompanyName,ContactName
  FROMCustomers
  WHERECustomerIDLIKE@CustomerID ’%’
  FORXMLAUTO
 END
 为了执行这个存储过程并传送相应的参数,我们可以使用下面这段URL,
http://localhost/northwind?sql=exec GetXml ’A’&root=root。这样,我们就能够在更高一
层次使用存储过程,并且可以根据最终用户想要得到的结果动态的改变参数值(比如在本例中
  三、使用XML模板进行查询
 SQLServer2000通过在HTTP请求中内嵌SQL语句的功能显然是非常强大并且有用的
。但是这种见也隐藏着极大的隐患,一旦某个最终用户了解了直接使用浏览器查询数据库的方
法,那么数据库中的数据就很危险了,因为最终用户可能会尝试执行他自己的insert,update
 为了维护大部分数据库中数据交易的安全,使用户不能够直接使用URL进行查询,
SQLServer2000介绍了XML模板的概念,可以设置SQLServer虚拟目录把这些URL查询导向那
 在我们讨论模板概念之前,让我们重新回到SQLServer的IIS虚拟目录治理器中,进

dedecms.com


入“设置”选项卡。为了防止用户使用HTTP访问,我们必须把“答应URL查询”选项给去掉
 为了答应XML模板执行SQL查询,进入“虚拟名称”选项卡,并单击新建按钮,新建一
个模板文件夹,取名为templates,在下拉菜单中选择template。然后,要么输入一个你的
XML模板将储存的路径或者单击“浏览”按钮。本例中使用C:Inetp
ubwwwrootxmlemplates。一旦你已经提供了所有的必要的信息,请单击“保存”按钮。
 现在一个虚拟目录已经被映射到一个指定来保存XML查询模板的文件夹,让我们创建
一个有效的XML模板,用来执行SQL查询。下面的代码是一个模板示例。
织梦好,好织梦

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息