SQL 쿼리 실행(SQLXML 관리되는 클래스)
적용 대상: SQL Server Azure SQL Database
이 예에서는 다음 작업을 수행하는 방법을 보여 줍니다.
매개 변수 만들기(SqlXmlParameter 개체)
SqlXmlParameter 개체의 속성(이름 및 값)에 값을 할당합니다.
이 예제에서는 성 값이 매개 변수로 전달된 직원의 이름, 성 및 생년월일을 검색하기 위해 간단한 SQL 쿼리가 실행됩니다. 매개 변수(LastName)를 지정하면 Value 속성만 설정됩니다. 이 쿼리에서 매개 변수는 위치이며 이름이 필요하지 않으므로 Name 속성이 설정되지 않았습니다.
기본적으로 SqlXmlCommand 개체의 CommandType 속성은 Sql입니다. 따라서 속성이 명시적으로 설정되지 않았습니다.
참고 항목
코드에서 연결 문자열 Microsoft SQL Server 인스턴스의 이름을 제공해야 합니다.
C# 코드는 다음과 같습니다.
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;
SqlXmlParameter p;
SqlXmlCommand cmd = new SqlXmlCommand(ConnString);
cmd.CommandText = "SELECT FirstName, LastName FROM Person.Contact WHERE LastName=? For XML Auto";
p = cmd.CreateParameter();
p.Value = "Achong";
string strResult;
try
{
strm = cmd.ExecuteStream();
strm.Position = 0;
using(StreamReader sr = new StreamReader(strm))
{
Console.WriteLine(sr.ReadToEnd());
}
}
catch (SqlXmlException e)
{
//in case of an error, this prints error returned.
e.ErrorStream.Position=0;
strResult=new StreamReader(e.ErrorStream).ReadToEnd();
System.Console.WriteLine(strResult);
}
return 0;
}
public static int Main(String[] args)
{
testParams();
return 0;
}
}
애플리케이션을 테스트하려면
이 항목에 제공된 C# 코드(DocSample.cs)를 폴더에 저장합니다.
코드를 컴파일합니다. 명령 프롬프트에서 코드를 컴파일하려면 다음을 사용합니다.
csc /reference:Microsoft.Data.SqlXML.dll DocSample.cs
그러면 실행 파일(DocSample.exe)이 만들어집니다.
명령 프롬프트에서 DocSample.exe 실행합니다.
이 예제를 테스트하려면 컴퓨터에 Microsoft .NET Framework가 설치되어 있어야 합니다.
SQL 쿼리를 명령 텍스트로 지정하는 대신 updategram(템플릿이기도 함)을 실행하는 템플릿(다음 코드 조각에 표시된 대로)을 지정하여 고객 레코드를 삽입할 수 있습니다. 파일에서 템플릿과 updategram을 지정한 후 파일을 실행합니다. 자세한 내용은 CommandText 속성을 사용하여 템플릿 파일 실행을 참조 하세요.
SqlXmlCommand cmd = new SqlXmlCommand("Provider=SQLOLEDB;Data Source=SqlServerName;Initial Catalog=Database; Integrated Security=SSPI;");
Stream stm;
cmd.CommandType = SqlXmlCommandType.UpdateGram;
cmd.CommandText = "<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql' xmlns:updg='urn:schemas-microsoft-com:xml-updategram'>" +
"<updg:sync>" +
"<updg:before/>" +
"<updg:after>" +
"<Customer CustomerID='aaaaa' CustomerName='Some Name' CustomerTitle='SomeTitle' />" +
"</updg:after>" +
"</updg:sync>" +
"</ROOT>";
stm = cmd.ExecuteStream();
stm = null;
cmd = null;
ExecuteToStream 사용
기존 스트림이 있는 경우 Stream 개체를 만들고 Execute 메서드를 사용하는 대신 ExecuteToStream 메서드를 사용할 수 있습니다. 이전 예제의 코드는 ExecuteToStream 메서드를 사용하도록 여기에서 수정됩니다.
using System;
using Microsoft.Data.SqlXml;
using System.IO;
class Test
{
static string ConnString = "Provider=SQLOLEDB;Server=SqlServerName;database=AdventureWorks;Integrated Security=SSPI;";
public static int testParams()
{
SqlXmlParameter p;
MemoryStream ms = new MemoryStream();
StreamReader sr = new StreamReader(ms);
ms.Position = 0;
SqlXmlCommand cmd = new SqlXmlCommand(ConnString);
cmd.CommandText = "select FirstName, LastName from Person.Contact where LastName = ? For XML Auto";
p = cmd.CreateParameter();
p.Value = "Achong";
cmd.ExecuteToStream(ms);
ms.Position = 0;
Console.WriteLine(sr.ReadToEnd());
return 0;
}
public static int Main(String[] args)
{
testParams();
return 0;
}
}
참고 항목
XmlReader 개체를 반환하는 ExecuteXMLReadermethod를 사용할 수도 있습니다. 자세한 내용은 ExecuteXMLReader 메서드를 사용하여 SQL 쿼리 실행을 참조 하세요.