Bagikan melalui


Menggunakan Kueri FOR XML Bersarang di ASP.NET

Dalam contoh ini, aplikasi ASP.NET mengembalikan XML ke browser dengan menjalankan prosedur tersimpan di SQL Server. Prosedur tersimpan menghasilkan XML menggunakan kueri berlapis. Pernyataan SELECT serupa ditampilkan dalam topik Menggenerasikan Saudara dengan Menggunakan Kueri Mode Auto Berlapis. Contoh ini menunjukkan salah satu cara untuk menggunakan kueri XML BERlapis untuk menghasilkan XML yang berpusat pada elemen di SQL Server.

Contoh

CREATE PROC GetSalesOrderInfo AS  
SELECT   
      (SELECT top 2 SalesOrderID, SalesPersonID, CustomerID,  
         (select top 3 SalesOrderID, ProductID, OrderQty, UnitPrice  
           from Sales.SalesOrderDetail  
            WHERE  SalesOrderDetail.SalesOrderID = SalesOrderHeader.SalesOrderID  
            FOR XML AUTO, TYPE)  
      FROM  Sales.SalesOrderHeader  
        WHERE SalesOrderHeader.SalesOrderID = SalesOrder.SalesOrderID  
      for xml auto, type),  
        (SELECT *   
         FROM  (SELECT SalesPersonID, EmployeeID  
              FROM Sales.SalesPerson, HumanResources.Employee  
              WHERE SalesPerson.SalesPersonID = Employee.EmployeeID) As SalesPerson  
         WHERE  SalesPerson.SalesPersonID = SalesOrder.SalesPersonID  
       FOR XML AUTO, TYPE, ELEMENTS)  
FROM (SELECT SalesOrderHeader.SalesOrderID, SalesOrderHeader.SalesPersonID  
      FROM Sales.SalesOrderHeader, Sales.SalesPerson  
      WHERE SalesOrderHeader.SalesPersonID = SalesPerson.SalesPersonID  
     ) as SalesOrder  
ORDER BY SalesOrder.SalesOrderID  
FOR XML AUTO, TYPE  
GO  

Ini adalah aplikasi .aspx. Ini menjalankan prosedur tersimpan dan mengembalikan XML di browser:

<%@LANGUAGE=C# Debug=true %>  
<%@import Namespace="System.Xml"%>  
<%@import namespace="System.Data.SqlClient" %><%  
Response.Expires = -1;  
Response.ContentType = "text/xml";  
%>  
  
<%  
using(System.Data.SqlClient.SqlConnection c = new System.Data.SqlClient.SqlConnection("Data Source=server;Database=AdventureWorks;Integrated Security=SSPI;"))  
using(System.Data.SqlClient.SqlCommand cmd = c.CreateCommand())  
{  
   cmd.CommandText = "GetSalesOrderInfo";  
   cmd.CommandType = CommandType.StoredProcedure;  
   cmd.Connection.Open();  
   System.Xml.XmlReader r = cmd.ExecuteXmlReader();  
   System.Xml.XmlTextWriter w = new System.Xml.XmlTextWriter(Response.Output);  
   w.WriteStartElement("Root");  
   r.MoveToContent();  
   while(! r.EOF)  
   {  
      w.WriteNode(r, true);  
   }  
   w.WriteEndElement();  
   w.Flush();  
}  
%>  
Untuk menguji aplikasi
  1. Buat prosedur tersimpan di database AdventureWorks2012 .

  2. Simpan aplikasi .aspx di direktori c:\inetpub\wwwroot (GetSalesOrderInfo.aspx).

  3. Jalankan aplikasi (https://server/GetSalesOrderInfo.aspx).

Lihat Juga

Menggunakan Kueri XML Berlapis