Bagikan melalui


Menggunakan kueri XML berlapis di ASP.NET

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceDatabase SQL di Microsoft Fabric

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 artikel Menghasilkan Saudara dengan Menggunakan Kueri dengan Mode AUTO Tersarang. 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();
}
%>

Uji aplikasi

  1. Buat prosedur tersimpan di dalam basis data AdventureWorks2025.

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

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

Lihat juga