|
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
|
Übersetzung
Original
|
Verwenden von FOR XML-Ergebnissen in Anwendungscode
-
Abfragen von SQL-Tabellen für Instanzen von XML-Daten (SQL Server)-Werten -
Wenden Sie die TYPE-Direktive in FOR XML-Abfragen an, um das Ergebnis von Abfragen zurückzugeben, die typisierte Text- oder Imagedaten als XML enthalten.
<!-- BeginRecordAndStreamVBS -->
<%@ LANGUAGE = VBScript %>
<!-- % Option Explicit % -->
<!-- 'Request.ServerVariables("SERVER_NAME") & ";" & _ -->
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Developer Studio"/>
<META HTTP-EQUIV="Content-Type" content="text/html"; charset="iso-8859-1">
<TITLE>FOR XML Query Example</TITLE>
<STYLE>
BODY
{
FONT-FAMILY: Tahoma;
FONT-SIZE: 8pt;
OVERFLOW: auto
}
H3
{
FONT-FAMILY: Tahoma;
FONT-SIZE: 8pt;
OVERFLOW: auto
}
</STYLE>
<!-- #include file="adovbs.inc" -->
<%
Response.Write "<H3>Server-side processing</H3>"
Response.Write "Page Generated @ " & Now() & "<BR/>"
Dim adoConn
Set adoConn = Server.CreateObject("ADODB.Connection")
Dim sConn
sConn = "Provider=SQLOLEDB;Data Source=(local);" & _
"Initial Catalog=AdventureWorks;Integrated Security=SSPI;"
Response.write "Connect String = " & sConn & "<BR/>"
adoConn.ConnectionString = sConn
adoConn.CursorLocation = adUseClient
adoConn.Open
Response.write "ADO Version = " & adoConn.Version & "<BR/>"
Response.write "adoConn.State = " & adoConn.State & "<BR/>"
Dim adoCmd
Set adoCmd = Server.CreateObject("ADODB.Command")
Set adoCmd.ActiveConnection = adoConn
Dim sQuery
sQuery = "<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'><sql:query>SELECT Demographics from Sales.Store WHERE CustomerID = 3 FOR XML AUTO</sql:query></ROOT>"
Response.write "Query String = " & sQuery & "<BR/>"
Dim adoStreamQuery
Set adoStreamQuery = Server.CreateObject("ADODB.Stream")
adoStreamQuery.Open
adoStreamQuery.WriteText sQuery, adWriteChar
adoStreamQuery.Position = 0
adoCmd.CommandStream = adoStreamQuery
adoCmd.Dialect = "{5D531CB2-E6Ed-11D2-B252-00C04F681B71}"
Response.write "Pushing XML to client for processing " & "<BR/>"
adoCmd.Properties("Output Stream") = Response
Response.write "<XML ID='MyDataIsle'>"
adoCmd.Execute , , 1024
Response.write "</XML>"
%>
<SCRIPT language="VBScript" For="window" Event="onload">
Dim xmlDoc
Set xmlDoc = MyDataIsle.XMLDocument
Dim root
Set root = xmlDoc.documentElement.childNodes.Item(0).childNodes.Item(0).childNodes.Item(0)
For each child in root.childNodes
dim OutputXML
OutputXML = document.all("log").innerHTML
document.all("log").innerHTML = OutputXML & "<LI><B>" & child.nodeName & ":</B> " & child.Text & "</LI>"
Next
MsgBox xmlDoc.xml
</SCRIPT>
</HEAD>
<BODY>
<H3>Client-side processing of XML Document MyDataIsle</H3>
<UL id=log>
</UL>
</BODY>
</HTML>
<!-- EndRecordAndStreamVBS -->
So testen Sie dieses Beispiel
Überprüfen Sie, dass IIS installiert ist und dass die AdventureWorks-Beispieldatenbank für SQL Server installiert wurde. Für dieses Beispiel ist es erforderlich, dass Internet Information Services (IIS) Version 5.0 oder höher installiert und die ASP-Unterstützung aktiviert ist. Außerdem muss die AdventureWorks-Beispieldatenbank installiert sein. Kopieren Sie das zuvor bereitgestellte Codebeispiel, und fügen Sie es in den von Ihnen verwendeten XML- oder Texteditor ein. Speichern Sie die Datei als RetrieveResults.asp im Stammverzeichnis, das für IIS verwendet wird. Üblicherweise ist das C:Inetpub\wwwroot. Öffnen Sie die ASP-Seite in einem Browserfenster, indem Sie die folgende URL verwenden. Ersetzen Sie zunächst 'MyServer' entweder durch "localhost" oder durch den tatsächlichen Namen des Servers, auf dem SQL Server und IIS installiert sind. http://MyServer/RetrieveResults.asp
Serverseitiges Verarbeiten
Clientseitiges Verarbeiten von XML-Dokument MyDataIsle
AnnualSales: 1500000 AnnualRevenue: 150000 BankName: Primary International BusinessType: OS YearOpened: 1974 Specialty: Road SquareFeet: 38000 Brands: 3 Internet: DSL NumberEmployees: 40
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Sales.Store>
<Demographics>
<StoreSurvey xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey">
<AnnualSales>1500000</AnnualSales>
<AnnualRevenue>150000</AnnualRevenue>
<BankName>Primary International</BankName>
<BusinessType>OS</BusinessType>
<YearOpened>1974</YearOpened>
<Specialty>Road</Specialty>
<SquareFeet>38000</SquareFeet>
<Brands>3</Brands>
<Internet>DSL</Internet>
<NumberEmployees>40</NumberEmployees>
</StoreSurvey>
</Demographics>
</Sales.Store>
</ROOT>
-
SqlConnection wird verwendet, um basierend auf dem Inhalt einer angegebenen Verbindungszeichenfolgenvariablen stConn eine Verbindung mit SQL Server zu öffnen. -
SqlDataAdapter wird dann als Datenadapter verwendet, und es verwendet die SQL-Verbindung und eine angegebene SQL-Abfragezeichenfolge, um die FOR XML-Abfrage auszuführen. -
Nach dem Ausführen der Abfrage wird die SqlDataAdapter.Fill-Methode aufgerufen und an eine Instanz eines DataSet, MyDataSet übergeben, um das Dataset mit der Ausgabe der FOR XML-Abfrage zu füllen. -
Anschließend wird die DataSet.GetXml-Methode aufgerufen, um die Abfrageergebnisse als eine Zeichenfolge zurückzugeben, die in der vom Server generierten HTML-Seite angezeigt werden kann. <%@ Page Language="VB" %> <HTML> <HEAD> <TITLE>FOR XML Query Example</TITLE> <STYLE> BODY { FONT-FAMILY: Tahoma; FONT-SIZE: 8pt; OVERFLOW: auto } H3 { FONT-FAMILY: Tahoma; FONT-SIZE: 8pt; OVERFLOW: auto } </STYLE> </HEAD> <BODY> <% Dim s as String s = "<H3>Server-side processing</H3>" & _ "Page Generated @ " & Now() & "<BR/>" Dim SQL As String SQL = "SELECT Demographics from Sales.Store WHERE CustomerID = 3 FOR XML AUTO" Dim strConn As String strConn = "Server=(local);Database=AdventureWorks;Integrated Security=SSPI;" Dim MySqlConn As New System.Data.SqlClient.SqlConnection(strConn) Dim MySqlAdapter As New System.Data.SqlClient.SqlDataAdapter(SQL,MySqlConn) Dim MyDataSet As New System.Data.DataSet MySqlConn.Open() s = s & "<P>SqlConnection opened.</P>" MySqlAdapter.Fill(MyDataSet) s = s & "<P>" & MyDataSet.GetXml & "</P>" MySqlConn.Close() s = s & "<P>SqlConnection closed.</P>" Message.InnerHtml=s %> <SPAN id="Message" runat=server /> </BODY> </HTML>
So testen Sie dieses Beispiel
-
Überprüfen Sie, dass IIS installiert ist und dass die AdventureWorks-Beispieldatenbank für SQL Server installiert wurde. Für dieses Beispiel ist es erforderlich, dass Internet Information Services (IIS) Version 5.0 oder höher installiert und die ASP.NET-Unterstützung aktiviert ist. Außerdem muss die AdventureWorks-Beispieldatenbank installiert sein. -
Kopieren Sie den zuvor bereitgestellten Code, und fügen Sie ihn in den von Ihnen verwendeten XML- oder Texteditor ein. Speichern Sie die Datei als RetrieveResults.aspx im Stammverzeichnis, das für IIS verwendet wird. Üblicherweise ist das C:Inetpub\wwwroot. -
Öffnen Sie die ASP.NET-Seite in einem Browserfenster, indem Sie die folgende URL verwenden. Ersetzen Sie zunächst 'MyServer' entweder durch "localhost" oder durch den tatsächlichen Namen des Servers, auf dem SQL Server und IIS installiert sind. http://MyServer/RetrieveResults.aspx
Serverseitiges Verarbeiten
Page Generated @ 3/11/2005 3:36:02 PM SqlConnection opened. <Sales.Store><Demographics><StoreSurvey xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey"><AnnualSales>1500000</AnnualSales><AnnualRevenue>150000</AnnualRevenue><BankName>Primary International</BankName><BusinessType>OS</BusinessType><YearOpened>1974</YearOpened><Specialty>Road</Specialty><SquareFeet>38000</SquareFeet><Brands>3</Brands><Internet>DSL</Internet><NumberEmployees>40</NumberEmployees></StoreSurvey></Demographics></Sales.Store> SqlConnection closed.
Hinweis |
|---|
Hinweis