다음을 통해 공유


SqlCommand.ExecuteXmlReader 메서드

정의

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

public:
 System::Xml::XmlReader ^ ExecuteXmlReader();
public System.Xml.XmlReader ExecuteXmlReader ();
member this.ExecuteXmlReader : unit -> System.Xml.XmlReader
Public Function ExecuteXmlReader () As XmlReader

반환

XmlReader 개체입니다.

예외

SqlDbType 로 설정된 Stream 경우 ValueBinary 또는 VarBinary 이외의 가 사용되었습니다. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.

또는

이 로 SqlDbType 설정 TextReader 되었을 때 ValueChar, NChar, NVarChar, VarChar 또는 Xml 이외의 가 사용되었습니다.

또는

이 로 SqlDbType 설정 XmlReader 되었을 때 ValueXml 이외의 가 사용되었습니다.

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

또는

스트리밍 작업 동안 시간이 초과되었습니다. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.

스트리밍 작업 동안 SqlConnection이 닫히거나 삭제되었습니다. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.

스트리밍 작업 중에 또는 XmlReaderTextReader 개체에서 Stream 오류가 발생했습니다. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.

Stream 또는 XmlReaderTextReader 개체가 스트리밍 작업 중에 닫혔습니다. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.

예제

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

using System;
using System.Data;
using Microsoft.Data.SqlClient;

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

설명

이 메서드에서 반환된 XmlReader 는 비동기 작업을 지원하지 않습니다. 속성은 CommandText 일반적으로 유효한 FOR XML 절을 사용하여 Transact-SQL 문을 지정합니다. 그러나 유효한 CommandText XML을 포함하는 데이터 또는 nvarchar 데이터 형식으로 정의된 xml 열의 내용을 반환 ntext 하는 문을 지정할 수도 있습니다.

일반적인 ExecuteXmlReader 쿼리는 다음 Microsoft Visual C# 예제와 같이 형식을 지정할 수 있습니다.

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

이 메서드를 사용하여 XML 데이터가 포함된 단일 행 단일 열 결과 집합을 검색할 수도 있습니다. 이 경우 둘 이상의 행이 반환 ExecuteXmlReader 되면 메서드는 를 첫 번째 행의 값에 연결 XmlReader 하고 나머지 결과 집합을 삭제합니다.

MARS(다중 활성 결과 집합) 기능을 사용하면 동일한 연결을 사용하는 여러 작업을 수행할 수 있습니다.

또는 BeginExecuteReader 를 사용하여 ExecuteReader XML 데이터에 액세스하는 경우 SQL Server 각각 2,033자의 여러 행에서 길이가 2,033자보다 큰 XML 결과를 반환합니다. 이 동작을 방지하려면 또는 BeginExecuteXmlReader 를 사용하여 ExecuteXmlReader FOR XML 쿼리를 읽습니다.

적용 대상