다음을 통해 공유


SqlCommand.ExecuteXmlReader 메서드

CommandTextConnection에 보내고, XmlReader 개체를 빌드합니다.

네임스페이스: System.Data.SqlClient
어셈블리: System.Data(system.data.dll)

구문

‘선언
Public Function ExecuteXmlReader As XmlReader
‘사용 방법
Dim instance As SqlCommand
Dim returnValue As XmlReader

returnValue = instance.ExecuteXmlReader
public XmlReader ExecuteXmlReader ()
public:
XmlReader^ ExecuteXmlReader ()
public XmlReader ExecuteXmlReader ()
public function ExecuteXmlReader () : XmlReader

반환 값

XmlReader 개체입니다.

예외

예외 형식 조건

SqlException

잠긴 행에 대해 명령을 실행하는 동안 예외가 발생한 경우. Microsoft .NET Framework 버전 1.0을 사용하면 이 예외가 생성되지 않습니다.

설명

CommandText 속성은 일반적으로 Transact-SQL 문을 유효한 FOR XML 절로 지정합니다. 그러나 CommandText는 유효한 XML이 들어 있는 ntext 또는 nvarchar 데이터나 xml 데이터 형식으로 정의된 열의 내용을 반환하는 문도 지정할 수 있습니다.

일반적인 ExecuteXmlReader 쿼리의 형식은 다음 Microsoft Visual C# 예제처럼 지정될 수 있습니다.

SqlCommand command = new SqlCommand("SELECT * FROM dbo.Customers FOR XML AUTO, XMLDATA", SqlConn);

참고

이러한 형식의 쿼리는 Microsoft SQL Server 2000 이상에서만 작동합니다. 자세한 내용은 SQL Server 온라인 설명서의 “FOR XML 절 사용을 위한 지침”을 참조하십시오.

SQL Server 2005에서는 이 메서드를 사용하여 XML 데이터가 포함된 단일 행, 단일 열 결과 집합을 검색할 수도 있습니다. 이 경우 여러 개의 행이 반환되면 ExecuteXmlReader 메서드는 XmlReader를 첫 번째 행의 값에 첨부하고 결과 집합의 나머지 부분은 모두 버립니다.

SQL Server 2005 이전의 SQL Server 버전에서는 XmlReader가 사용 중인 경우 연관된 SqlConnectionXmlReader의 작업을 지원하는 데 사용됩니다. 이 상태 동안에는 SqlConnection을 닫지 않는 한 다른 작업을 수행할 수 없습니다. 이런 상태는 XmlReaderClose 메서드가 호출될 때까지 적용됩니다. SQL Server 2005부터는 MARS(Multiple Active Result Set) 기능을 통해 여러 작업을 같은 연결을 사용하여 수행할 수 있습니다.

ExecuteReader 또는 BeginExecuteReader를 사용하여 XML 데이터에 액세스하는 경우 SQL Server는 길이가 2,033자가 넘는 모든 XML 결과를 각각 2,033자인 여러 행으로 반환합니다. 이 동작을 방지하려면 ExecuteXmlReader 또는 BeginExecuteXmlReader를 사용하여 FOR XML 쿼리를 읽습니다. 자세한 내용은 https://support.microsoft.com에서 Microsoft 기술 자료 문서 310378, "PRB: SqlDataReader를 사용하면 XML 데이터가 잘린다"를 참조하십시오.

예제

다음 예제에서는 SqlCommand를 만든 후 ExecuteXmlReader를 사용하여 실행합니다. 예제에서는 Transact-SQL FOR XML SELECT 문인 문자열과 데이터 소스에 연결하는 데 사용하는 문자열을 전달합니다.

Public Sub CreateXMLReader(ByVal queryString As String, _
    ByVal connectionString As String)

    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As New SqlCommand(queryString, connection)
        Dim reader As System.Xml.XmlReader = command.ExecuteXmlReader
    End Using
End Sub
private static void CreateXMLReader(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        connection.Open();
        SqlCommand command = new SqlCommand(queryString, connection);
        System.Xml.XmlReader reader = command.ExecuteXmlReader();
    }
}

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

SqlCommand 클래스
SqlCommand 멤버
System.Data.SqlClient 네임스페이스

기타 리소스

ADO.NET에서 데이터 연결 및 검색
.NET Framework Data Provider for SQL Server 사용