CommandText 속성을 사용하여 템플릿 파일 실행

적용 대상: SQL Server Azure SQL 데이터베이스

이 예제에서는 CommandText 속성을 사용하여 SQL 또는 XPath 쿼리로 구성된 템플릿 파일을 지정하는 방법을 보여 줍니다. SQL 또는 XPath 쿼리를 CommandText 값으로 지정하는 대신 파일 이름을 값으로 지정할 수 있습니다. 다음 예제에서는 CommandType 속성이 SqlXmlCommandType.TemplateFile로 지정됩니다.

예제 애플리케이션에서 이 템플릿을 실행합니다.

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

이 애플리케이션은 C# 예제 애플리케이션입니다. 따라서 애플리케이션을 테스트하려면 템플릿(TemplateFile.xml)을 저장한 다음 애플리케이션을 실행해야 합니다.

참고

코드에서 연결 문자열에 Microsoft SQL Server instance 이름을 제공해야 합니다.

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

애플리케이션을 테스트하려면

  1. 컴퓨터에 Microsoft .NET Framework 설치되어 있는지 확인합니다.

  2. 이 예에서 제공하는 XML 템플릿(TemplateFile.xml)을 폴더에 저장합니다.

  3. 이 예에서 제공하는 C# 코드(DocSample.cs)를 스키마가 저장된 폴더와 같은 폴더에 저장합니다. (다른 폴더에 파일을 저장하는 경우 코드를 편집하여 매핑 스키마에 대해 적합한 디렉터리 경로를 지정해야 합니다.)

  4. 코드를 컴파일합니다. 다음을 사용하여 명령 프롬프트에서 코드를 컴파일합니다.

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

    이렇게 하면 실행 파일(DocSample.exe)이 만들어집니다.

  5. 명령 프롬프트에서 DocSample.exe를 실행합니다.

템플릿에 매개 변수를 전달하는 경우 매개 변수 이름은 기호(@)로 시작해야 합니다. 예를 들어 p.Name="@ContactID"입니다. 여기서 p는 SqlXmlParameter 개체입니다.

다음은 하나의 매개 변수를 사용하는 업데이트된 템플릿입니다.

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

다음은 템플릿을 실행하기 위해 매개 변수가 전달되는 업데이트된 코드입니다.

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