Freigeben über


Ausführen von Vorlagendateien mit der 'CommandText'-Eigenschaft

Gilt für: SQL Server Azure SQL-Datenbank

In diesem Beispiel wird veranschaulicht, wie Vorlagendateien, die aus SQL- oder XPath-Abfragen bestehen, mithilfe der CommandText-Eigenschaft angegeben werden können. Anstatt die SQL- oder XPath-Abfrage als Wert von CommandText anzugeben, können Sie einen Dateinamen als Wert angeben. Im folgenden Beispiel wird die CommandType-Eigenschaft als SqlXmlCommandType.TemplateFile angegeben.

Diese Vorlage wird von der Beispielanwendung ausgeführt:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <sql:query>  
    SELECT TOP 2 ContactID, FirstName, LastName   
    FROM   Person.Contact  
    FOR XML AUTO  
  </sql:query>  
</ROOT>  

Dies ist die C#-Beispielanwendung. Um die Anwendung zu testen, speichern Sie die Vorlage (TemplateFile.xml), und führen Sie dann die Anwendung aus.

Hinweis

Im Code müssen Sie den Namen der Instanz von Microsoft SQL Server im Verbindungszeichenfolge angeben.

using System;  
using Microsoft.Data.SqlXml;  
using System.IO;  
class Test  
{  
      static string ConnString = "Provider=SQLOLEDB;Server=(local);database=AdventureWorks;Integrated Security=SSPI";  
  
      public static int testParams()  
      {  
         //Stream strm;  
         SqlXmlCommand cmd = new SqlXmlCommand(ConnString);  
         cmd.CommandType = SqlXmlCommandType.TemplateFile;  
         cmd.CommandText = "TemplateFile.xml";  
         using (Stream strm = cmd.ExecuteStream()){  
            using (StreamReader sr = new StreamReader(strm)){  
                Console.WriteLine(sr.ReadToEnd());  
            }  
         }  
  
         return 0;        
      }  
      public static int Main(String[] args)  
      {  
         testParams();     
         return 0;  
      }  
   }  

So testen Sie die Anwendung

  1. Stellen Sie sicher, dass das Microsoft .NET Framework auf Ihrem Computer installiert ist.

  2. Speichern Sie die in diesem Beispiel bereitgestellte XML-Vorlage in einem Ordner.

  3. Speichern Sie den C#-Code (DocSample.cs), der in diesem Beispiel im selben Ordner bereitgestellt wird, in dem das Schema gespeichert ist. (Wenn Sie die Dateien in einem anderen Ordner speichern, müssen Sie den Code bearbeiten und den entsprechenden Verzeichnispfad für das Zuordnungsschema angeben.)

  4. Kompilieren Sie den Code. Verwenden Sie zur Kompilierung des Codes an der Eingabeaufforderung die folgende Zeichenfolge:

    csc /reference:Microsoft.Data.SqlXML.dll DocSample.cs  
    

    Dadurch wird eine ausführbare Datei (DocSample.exe) erstellt.

  5. Führen Sie DocSample.exe an der Eingabeaufforderung aus.

Wenn Sie einen Parameter an eine Vorlage übergeben, muss der Parametername mit dem At-Zeichen (@) beginnen. Beispiel: p.Name="@ContactID", wobei p ein SqlXmlParameter-Objekt ist.

Dies ist die aktualisierte Vorlage, die einen Parameter annimmt.

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <sql:header>  
     <sql:param name='ContactID'>1</sql:param>    
  </sql:header>  
  <sql:query>  
    SELECT ContactID, FirstName, LastName  
    FROM   Person.Contact  
    WHERE  ContactID=@ContactID  
    FOR XML AUTO  
  </sql:query>  
</ROOT>  

Dies ist der aktualisierte Code, in dem ein Parameter übergeben wird, um die Vorlage auszuführen.

public static int testParams()  
{  
  
   Stream strm;  
   SqlXmlParameter p;  
  
   SqlXmlCommand cmd = new SqlXmlCommand(ConnString);  
   cmd.CommandType = SqlXmlCommandType.TemplateFile;  
   cmd.CommandText = "TemplateFile.xml";  
   p = cmd.CreateParameter();  
   p.Name="@ContactID";  
   p.Value = "1";  
   strm = cmd.ExecuteStream();  
   StreamReader sw = new StreamReader(strm);  
   Console.WriteLine(sw.ReadToEnd());  
   return 0;        
}