Sdílet prostřednictvím


Spouštění souborů šablon pomocí vlastnosti CommandText

platí pro:SQL Serverazure SQL Database

Tento příklad ukazuje, jak lze šablonové soubory složené ze SQL nebo XPath dotazů zadat pomocí vlastnosti CommandText. Místo zadávání SQL nebo XPath dotazu jako hodnoty CommandText můžete jako hodnotu zadat název souboru. V následujícím příkladu je vlastnost CommandType specifikována jako SqlXmlCommandType.TemplateFile.

Ukázková aplikace spouští tuto šablonu:

<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>  

Toto je ukázková aplikace v C#. Pro testování aplikace uložte šablonu (TemplateFile.xml) a poté aplikaci spustíte.

Poznámka:

V kódu musíte v řetězci spojení uvést název instance Microsoft SQL Serveru.

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;  
      }  
   }  

Otestování aplikace

  1. Ujistěte se, že máte na počítači nainstalovaný Microsoft .NET Framework.

  2. Šablonu XML (TemplateFile.xml), která je uvedena v tomto příkladu, uložte do složky.

  3. Uložit C# kód (DocSample.cs), který je uveden v tomto příkladu, do stejné složky, ve které je schéma uloženo. (Pokud soubory uložíte do jiné složky, budete muset upravit kód a zadat vhodnou cestu k adresáři pro mapovací schéma.)

  4. Zkompilujte kód. Pro kompilaci kódu v příkazovém řádku použijte:

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

    Tím vzniká spustitelný soubor (DocSample.exe).

  5. V příkazovém řádku spusťte DocSample.exe.

Pokud předáte parametr šabloně, název parametru musí začínat na znaménku (@); například p.Name="@ContactID", kde p je objekt SqlXmlParameter.

Toto je aktualizovaná šablona, která zabírá jeden parametr.

<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>  

Jedná se o aktualizovaný kód, do kterého je parametr vložen pro spuštění šablony.

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;        
}