다음을 통해 공유


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

적용 대상: SQL ServerAzure SQL Database

이 예제에서는 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 인스턴스의 이름을 제공해야 합니다.

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