Aracılığıyla paylaş


CommandText Özelliğini Kullanarak Şablon Dosyalarını Yürütme

Şunlar için geçerlidir:SQL ServerAzure SQL Veritabanı

Bu örnek, SQL veya XPath sorgularından oluşan şablon dosyalarının CommandText özelliği kullanılarak nasıl belirlenebileceğini göstermektedir. SQL veya XPath sorgusunu CommandText değeri olarak belirtmek yerine, değer olarak bir dosya adı belirtebilirsiniz. Aşağıdaki örnekte, CommandType özelliği SqlXmlCommandType.TemplateFile olarak belirtilmiştir.

Örnek uygulama şu şablonu çalıştırır:

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

Bu C# örnek uygulamasıdır. Uygulamayı test etmek için şablonu (TemplateFile.xml) kaydedin ve ardından uygulamayı çalıştırın.

Uyarı

Kodda, bağlantı dizisinde Microsoft SQL Server örneğinin adını belirtmeniz gerekir.

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

Uygulamayı test etmek için

  1. Microsoft .NET Framework'ün bilgisayarınızda yüklendiğinden emin olun.

  2. Bu örnekte sunulan XML şablonunu (TemplateFile.xml) bir klasörde kaydedin.

  3. Bu örnekte verilen C# kodunu (DocSample.cs) şemanın saklandığı klasöre kaydedin. (Dosyaları farklı bir klasörde saklarsanız, kodu düzenlemeniz ve eşleme şeması için uygun dizin yolunu belirtmeniz gerekir.)

  4. Kodu derleyin. Kodu komut isteğinde derlemek için şunları kullanın:

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

    Bu, bir yürütülebilir (DocSample.exe) oluşturur.

  5. Komut dizisinde, DocSample.exeçalıştırın.

Bir parametreyi bir şablona aktarırsanız, parametre adı işaret (@) ile başlamalıdır; örneğin, p.Name="@ContactID", burada p bir SqlXmlParameter nesnesidir.

Bu, bir parametre alan güncellenmiş şablondur.

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

Bu, şablonun çalıştırılması için bir parametrenin iletildiği güncellenmiş koddur.

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