ADO.NET 快速入門(十二):從 SQL Server 生成 XML 數據

本文演示如何使用2種不一樣的方法從 SQL Server 生成 XML。
 
方法1:使用了 SqlCommand 的 ExecuteXmlReader 方法獲取 XmlReader,而後使用 DataSet 類的 ReadXml 方法把 XmlReader 填充到 DataSet。
 
方法2:使用 SqlDataAdapter 提取數據內容,並使其適應 DataSet 內部的XML 結構。SqlDataAdapter 類封裝了一組數據指令和一個數據鏈接,用於填充 DataSet 。
 
示例1,首先打開一個 SQL Server Northwind 庫的鏈接。而後建立 SqlCommand,從 Northwind 庫的 Customers 表選擇全部行。在這條指令裏 FOR XML 子句,用於表達你正在請求 SQL Server 返回 XML 文檔做爲查詢結果。FOR XML 子句上的 XMLDATA 標識說明應該返回 XML-Data Schema。
 
示例1:
 
 
    String sConnection = "server=(local)\\SQLExpress;Integrated Security=SSPI;database=northwind";
    SqlConnection mySqlConnection = new SqlConnection(sConnection);
    SqlCommand mySqlCommand = new SqlCommand("select * from customers FOR XML AUTO, XMLDATA", mySqlConnection);
    mySqlCommand.CommandTimeout = 15;
    ...
    mySqlConnection.Open();

 

示例2(第一部分)建立了名爲 myDataSet1 的 DataSet 對象。而後,添加 XmlTextReader 和 XmlReadMode.Fragment 標識,用於使用 ReadXml 方法讀取 從 SQL Server 返回到 DataSet1 的 XmlDocument 。
 
 
示例2(第二部分)建立了名爲 myDataSet2 的 DataSet 對象,而且建立了 SqlDataAdapter 對象提供 SQL 指令從 SQL Serever 庫訪問和檢索數據。而後,調用 SqlDataAdapter 上的 Fill 方法來加載數據到 myDataSet2。
 
最後一步打印2個 DataSets 從而驗證數據是否相同而且審查 XML 格式(參考下面 data1.xml 和 data2.xml 生成的數據)。
 
示例2:
 
            SqlConnection myConnection = new SqlConnection("server=(local);Integrated Security=SSPI;database=northwind;");
            myConnection.Open();

            // 使用 XML 數據填充 DataSet 對象
            DataSet myDataSet1 = new DataSet();
            SqlCommand myCommand = new SqlCommand("SELECT TOP 1 * FROM Customers FOR XML AUTO, XMLDATA", myConnection);
            XmlReader myReader = myCommand.ExecuteXmlReader();
            myDataSet1.ReadXml(myReader, XmlReadMode.Fragment);

            // 使用 SqlDataAdapter 填充 DataSet 對象
            SqlDataAdapter myAdapter = new SqlDataAdapter("SELECT TOP 1 * FROM Customers", myConnection);
            DataSet myDataSet2 = new DataSet();
            myAdapter.Fill(myDataSet2);

            // 將數據寫入文件:用於比較 data1.xml 和 data2.xml
            myDataSet1.WriteXml("c:\\data1.xml");
            myDataSet2.WriteXml("c:\\data2.xml");

            // 打印 data1.xml
            Console.WriteLine("********************data1.xml********************");
            Console.WriteLine(myDataSet1.GetXml());

            // 打印 data2.xml
            Console.WriteLine("********************data2.xml********************");
            Console.WriteLine(myDataSet2.GetXml());

 

方法1生成的 data1.xml:sql

<?xml version="1.0" standalone="yes"?>
<Schema1>
  <Customers CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" ContactName="Maria Anders" ContactTitle="Sales Representative" Address="Obere Str. 57" City="Berlin" PostalCode="12209" Country="Germany" Phone="030-0074321" Fax="030-0076545" />
</Schema1>

 

 

方法2生成的 data2.xml:asp.net

 

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <Table>
    <CustomerID>ALFKI</CustomerID>
    <CompanyName>Alfreds Futterkiste</CompanyName>
    <ContactName>Maria Anders</ContactName>
    <ContactTitle>Sales Representative</ContactTitle>
    <Address>Obere Str. 57</Address>
    <City>Berlin</City>
    <PostalCode>12209</PostalCode>
    <Country>Germany</Country>
    <Phone>030-0074321</Phone>
    <Fax>030-0076545</Fax>
  </Table>
</NewDataSet>

 

 

原文連接:
相關文章
相關標籤/搜索