本文演示如何使用2種不一樣的方法從 SQL Server 生成 XML。方法1:使用了 SqlCommand 的 ExecuteXmlReader 方法獲取 XmlReader,而後使用 DataSet 類的 ReadXml 方法把 XmlReader 填充到 DataSet。方法2:使用 SqlDataAdapter 提取數據內容,並使其適應 DataSet 內部的XML 結構。SqlDataAdapter 類封裝了一組數據指令和一個數據鏈接,用於填充 DataSet 。
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();
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>