Udostępnij przez


Wykonywanie za pomocą właściwości CommandText pliki szablonów

This example illustrates how template files that consist of SQL or XPath queries can be specified by using the CommandTextproperty.Zamiast określania kwerendy SQL lub wyrażenie XPath jako wartość CommandText, można określić nazwę pliku jako wartość.W poniższym przykładzie CommandType właściwość jest określona jako SqlXmlCommandType.TemplateFile.

Przykładowa aplikacja wykonuje tego szablonu:

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

Jest to aplikacja przykładowa C#.Aby przetestować aplikację, Zapisz szablon (TemplateFile.xml) a wykonać aplikacji.

Ostrzeżenie

W kodzie, należy podać nazwę wystąpienie programu Microsoft SQL Server w połączeniu z ciąg.

using System;
using Microsoft.Data.SqlXml;
using System.IO;
class Test
{
      static string ConnString = "Provider=SQLOLEDB;Server=(local);database=AdventureWorks2008R2;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;
      }
   }

Aby przetestować aplikację

  1. Upewnij się, że Microsoft .NET Framework są zainstalowane na komputerze.

  2. Zapisz szablon XML (TemplateFile.xml), który jest dostarczany w tym przykładzie w folderze.

  3. Zapisz kod C# (DocSample.cs) dostarczonego w tym przykładzie w tym samym folderze, w którym przechowywany jest schemat.(Jeśli pliki są przechowywane w innym folderze, będzie trzeba edytować kod i określ ścieżka katalogu właściwe dla mapowania schematu.)

  4. Skompiluj kod.Aby skompilować kod w wiersz polecenia, należy użyć zapisu:

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

    Tworzy plik wykonywalny (DocSample.exe).

  5. W wiersz polecenia wykonać DocSample.exe.

Jeśli parametr przekazać do szablonu, nazwa parametru musi rozpoczynać się znak (@); na przykład, p.Name="@BusinessEntityID", gdzie p jest SqlXmlParameter obiektu.

Jest to uaktualniony szablon, który przyjmuje jeden parametr.

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

Zaktualizowany kod, w którym parametr jest przekazywana do wykonać szablonu.

   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="@BusinessEntityID";
      p.Value = "1";
      strm = cmd.ExecuteStream();
      StreamReader sw = new StreamReader(strm);
      Console.WriteLine(sw.ReadToEnd());
      return 0;      
   }