程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 從 SQL Server 2005 中處理 XML(1)

從 SQL Server 2005 中處理 XML(1)

編輯:關於SqlServer

一、簡介

Microsoft SQL Server 2005 中的重大更改之一是包含了 XML 數據類型。此數據類型是第一類類型,就像 INTVARCHAR 一樣,而且 SQL Server 2005 允許使用一系列 XML 特定的函數對此數據類型進行就地查詢和處理。它還支持存儲數據庫中的 XML 架構的集合,從而啟用基於數據庫的架構驗證。另外,SQL Server 2005 大大地擴展了 XML 組合(SELECT ... FOR XML 語句)的功能,擴展了 OpenXML() XML 分解函數,並針對 XML 數據類型提供了一個新的 nodes() 函數以進行更輕量級的分解。

既然對數據庫服務器增強了此新的 XML 功能,那麼對 Microsoft ADO.NET 2.0 中的 SqlClIEnt 數據提供程序也進行增強就不會令人感到驚奇了。對 ADO.Net DataSet 也有更改,以便支持類型 XMLDataColumn,而且 System.DataSystem.XML 之間的“集成點”得到了拓寬。在本文中,我將探究在客戶端上使用 SQL Server 2005 XML 數據類型。

SQL Server 2005 可以產生兩類 XML 輸出。語句 SELECT * FROM AUTHORS FOR XML AUTO 產生 XML 流,而不是一列一行的行集。該輸出類型與 SQL Server 2000 中的輸出類型相比沒有改變。只是因為查詢分析器工具中的限制,XML 流輸出在 SQL Server 查詢分析器中才顯示為一列一行的行集。您可以通過其特定的唯一標識符名稱“XML_F52E2B61-18A1-11d1-B105-000805F49916B”來將這種流與“普通”列區分開來。此名稱實際上是底層 TDS(這是一種表格式的數據流,SQL Server 網絡格式)分析器的指示器,在這種分析器中,列應該流至客戶端,而不是像普通行集那樣發送。有一種特殊的方法 SqlCommand.ExecuteXMLReader 用來在客戶端上檢索此特殊的流。在 SQL Server 2005 中,SELECT ... FOR XML 語句通過許多方式得到了增強。這裡僅提少數幾種:

1.

在大多數情況下,當您需要 SQL Server 2000 中的 FOR XML EXPLICIT 模式時,有一種新的、便於使用的 FOR XML PATH 模式。

2.

使用 TYPE 指令,除了生成流之外,您還可以生成 XML 數據類型列。

3.

可以嵌套 FOR XML 表達式。

4.

SELECT ... FOR XML 可以使用 ROOT 指令生成 XML 文檔以及 XML 片段。

5.

您可以將標准的 XSD 架構預先掛起到流。

通過引用 ADO.Net 2.0 中的關系 datatype 枚舉,您可以初步了解到 XML 是一種一流的關系數據庫類型。System.Data.DbTypeSystem.Data.SqlDbType 分別包含 DbType.XMLSqlDbType.XML 的附加值。在 System.Data.SqlTypes 命名空間中也有一個新的類,它是 SqlXML。這個類充當 XML 類型值的 XMLReader 實例工廠。我將通過一些簡單的代碼進行展示。假設我有一份 SQL Server 表,如下所示:

CREATE TABLE xmltab (



  id INT IDENTITY PRIMARY KEY,



  xmlcol XML)



我可以使用以下 ADO.Net 2.0 代碼在客戶端上訪問此表。

using System;



using System.Data;



using System.Data.SqlClIEnt;



using System.Data.SqlTypes;



using System.Xml;







void GetXMLColumn {
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved