SqlCommand.ExecuteReader 메서드

정의

CommandTextConnection에 보내고, SqlDataReader를 빌드합니다.Sends the CommandText to the Connection and builds a SqlDataReader.

오버로드

ExecuteReader()

CommandTextConnection에 보내고, SqlDataReader를 빌드합니다.Sends the CommandText to the Connection and builds a SqlDataReader.

ExecuteReader(CommandBehavior)

CommandTextConnection에 보내고, CommandBehavior 값 중 하나를 사용하여 SqlDataReader를 빌드합니다.Sends the CommandText to the Connection, and builds a SqlDataReader using one of the CommandBehavior values.

ExecuteReader()

CommandTextConnection에 보내고, SqlDataReader를 빌드합니다.Sends the CommandText to the Connection and builds a SqlDataReader.

public:
 System::Data::SqlClient::SqlDataReader ^ ExecuteReader();
public System.Data.SqlClient.SqlDataReader ExecuteReader ();
member this.ExecuteReader : unit -> System.Data.SqlClient.SqlDataReader
Public Function ExecuteReader () As SqlDataReader

반환

SqlDataReader 개체입니다.A SqlDataReader object.

예외

ValueStream으로 설정되면 Binary 또는 VarBinary가 아닌 SqlDbType이 사용되었습니다.A SqlDbType other than Binary or VarBinary was used when Value was set to Stream. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.For more information about streaming, see SqlClient Streaming Support.

또는-or-

ValueTextReader로 설정되면 Char, NChar, NVarChar, VarChar 또는 Xml이 아닌 SqlDbType이 사용되었습니다.A SqlDbType other than Char, NChar, NVarChar, VarChar, or Xml was used when Value was set to TextReader.

또는-or-

ValueXmlReader로 설정된 경우 Xml이 아닌 SqlDbType이 사용되었습니다.A SqlDbType other than Xml was used when Value was set to XmlReader.

잠긴 행에 대해 명령을 실행하는 동안 예외가 발생했습니다.An exception occurred while executing the command against a locked row. Microsoft .NET Framework 버전 1.0을 사용하는 경우에는 이 예외가 생성되지 않습니다.This exception is not generated when you are using Microsoft .NET Framework version 1.0.

또는-or-

스트리밍 작업 동안 시간이 초과되었습니다.A timeout occurred during a streaming operation. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.For more information about streaming, see SqlClient Streaming Support.

연결의 현재 상태가 닫힘입니다.The current state of the connection is closed. ExecuteReader()에 열린 SqlConnection이 필요합니다.ExecuteReader() requires an open SqlConnection.

또는-or-

스트리밍 작업 동안 SqlConnection이 닫히거나 삭제되었습니다.The SqlConnection closed or dropped during a streaming operation. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.For more information about streaming, see SqlClient Streaming Support.

스트리밍 작업 동안 Stream, XmlReader 또는 TextReader 개체에서 오류가 발생했습니다.An error occurred in a Stream, XmlReader or TextReader object during a streaming operation. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.For more information about streaming, see SqlClient Streaming Support.

스트리밍 작업 동안 Stream, XmlReader 또는 TextReader 개체가 닫혔습니다.The Stream, XmlReader or TextReader object was closed during a streaming operation. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.For more information about streaming, see SqlClient Streaming Support.

예제

다음 예에서는 SqlCommand만든 다음 Transact-sql SELECT 문인 문자열과 데이터 원본에 연결 하는 데 사용할 문자열을 전달 하 여 실행 합니다.The following example creates a SqlCommand, and then executes it by passing a string that is a Transact-SQL SELECT statement, and a string to use to connect to the data source.

private static void CreateCommand(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        connection.Open();

        SqlCommand command = new SqlCommand(queryString, connection);
        SqlDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}", reader[0]));
        }
    }
}
Public Sub CreateCommand(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 SqlDataReader = command.ExecuteReader()
        While reader.Read()
            Console.WriteLine("{0}", reader(0))
        End While
    End Using
End Sub

설명

CommandType 속성이 StoredProcedure로 설정 된 경우 CommandText 속성을 저장 프로시저의 이름으로 설정 해야 합니다.When the CommandType property is set to StoredProcedure, the CommandText property should be set to the name of the stored procedure. 이 명령은 ExecuteReader를 호출할 때이 저장 프로시저를 실행 합니다.The command executes this stored procedure when you call ExecuteReader.

참고

트랜잭션이 교착 상태 이면 Read가 호출 될 때까지 예외가 throw 되지 않을 수 있습니다.If a transaction is deadlocked, an exception may not be thrown until Read is called.

MARS (multiple active result set) 기능을 사용 하면 동일한 연결을 사용 하는 여러 작업을 수행할 수 있습니다.The multiple active result set (MARS) feature allows for multiple actions using the same connection.

ExecuteReader 또는 BeginExecuteReader를 사용 하 여 XML SQL Server 데이터에 액세스 하는 경우에는 2033 자 보다 큰 모든 XML 결과를 2033 문자를 여러 행으로 반환 합니다.If you use ExecuteReader or BeginExecuteReader to access XML data, SQL Server will return any XML results greater than 2,033 characters in length in multiple rows of 2,033 characters each. 이 동작을 방지 하려면 ExecuteXmlReader 또는 BeginExecuteXmlReader를 사용 하 여 FOR XML 쿼리를 읽습니다.To avoid this behavior, use ExecuteXmlReader or BeginExecuteXmlReader to read FOR XML queries.

추가 정보

ExecuteReader(CommandBehavior)

CommandTextConnection에 보내고, CommandBehavior 값 중 하나를 사용하여 SqlDataReader를 빌드합니다.Sends the CommandText to the Connection, and builds a SqlDataReader using one of the CommandBehavior values.

public:
 System::Data::SqlClient::SqlDataReader ^ ExecuteReader(System::Data::CommandBehavior behavior);
public System.Data.SqlClient.SqlDataReader ExecuteReader (System.Data.CommandBehavior behavior);
member this.ExecuteReader : System.Data.CommandBehavior -> System.Data.SqlClient.SqlDataReader
Public Function ExecuteReader (behavior As CommandBehavior) As SqlDataReader

매개 변수

behavior
CommandBehavior

CommandBehavior 값 중 하나입니다.One of the CommandBehavior values.

반환

SqlDataReader 개체입니다.A SqlDataReader object.

예외

ValueStream으로 설정되면 Binary 또는 VarBinary가 아닌 SqlDbType이 사용되었습니다.A SqlDbType other than Binary or VarBinary was used when Value was set to Stream. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.For more information about streaming, see SqlClient Streaming Support.

또는-or-

ValueTextReader로 설정되면 Char, NChar, NVarChar, VarChar 또는 Xml이 아닌 SqlDbType이 사용되었습니다.A SqlDbType other than Char, NChar, NVarChar, VarChar, or Xml was used when Value was set to TextReader.

또는-or-

ValueXmlReader로 설정된 경우 Xml이 아닌 SqlDbType이 사용되었습니다.A SqlDbType other than Xml was used when Value was set to XmlReader.

스트리밍 작업 동안 시간이 초과되었습니다.A timeout occurred during a streaming operation. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.For more information about streaming, see SqlClient Streaming Support.

스트리밍 작업 동안 Stream, XmlReader 또는 TextReader 개체에서 오류가 발생했습니다.An error occurred in a Stream, XmlReader or TextReader object during a streaming operation. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.For more information about streaming, see SqlClient Streaming Support.

스트리밍 작업 동안 SqlConnection이 닫히거나 삭제되었습니다.The SqlConnection closed or dropped during a streaming operation. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.For more information about streaming, see SqlClient Streaming Support.

스트리밍 작업 동안 Stream, XmlReader 또는 TextReader 개체가 닫혔습니다.The Stream, XmlReader or TextReader object was closed during a streaming operation. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.For more information about streaming, see SqlClient Streaming Support.

예제

다음 예에서는 SqlCommand만든 다음 Transact-sql SELECT 문인 문자열과 데이터 원본에 연결 하는 데 사용할 문자열을 전달 하 여 실행 합니다.The following example creates a SqlCommand, and then executes it by passing a string that is a Transact-SQL SELECT statement, and a string to use to connect to the data source. CommandBehaviorCloseConnection로 설정됩니다.CommandBehavior is set to CloseConnection.

private static void CreateCommand(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        connection.Open();
        SqlDataReader reader =
            command.ExecuteReader(CommandBehavior.CloseConnection);
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}", reader[0]));
        }
    }
}
Public Sub CreateCommand(ByVal queryString As String, _
  ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        connection.Open()
        Dim reader As SqlDataReader = _
            command.ExecuteReader(CommandBehavior.CloseConnection)
        While reader.Read()
            Console.WriteLine("{0}", reader(0))
        End While
    End Using
End Sub

설명

CommandType 속성이 StoredProcedure로 설정 된 경우 CommandText 속성을 저장 프로시저의 이름으로 설정 해야 합니다.When the CommandType property is set to StoredProcedure, the CommandText property should be set to the name of the stored procedure. 이 명령은 ExecuteReader를 호출할 때이 저장 프로시저를 실행 합니다.The command executes this stored procedure when you call ExecuteReader.

참고

SequentialAccess를 사용 하 여 많은 값과 이진 데이터를 검색 합니다.Use SequentialAccess to retrieve large values and binary data. 그렇지 않으면 OutOfMemoryException 발생할 수 있으며 연결이 닫힙니다.Otherwise, an OutOfMemoryException might occur and the connection will be closed.

MARS (multiple active result set) 기능을 사용 하면 동일한 연결을 사용 하는 여러 작업을 수행할 수 있습니다.The multiple active result set (MARS) feature allows for multiple actions using the same connection.

ExecuteReader 또는 BeginExecuteReader를 사용 하 여 XML SQL Server 데이터에 액세스 하는 경우에는 2033 자 보다 큰 모든 XML 결과를 2033 문자를 여러 행으로 반환 합니다.If you use ExecuteReader or BeginExecuteReader to access XML data, SQL Server will return any XML results greater than 2,033 characters in length in multiple rows of 2,033 characters each. 이 동작을 방지 하려면 ExecuteXmlReader 또는 BeginExecuteXmlReader를 사용 하 여 FOR XML 쿼리를 읽습니다.To avoid this behavior, use ExecuteXmlReader or BeginExecuteXmlReader to read FOR XML queries.

추가 정보

적용 대상