Поделиться через


SqlCommand.ExecuteReader Метод

Определение

Отправляет объект CommandTextConnection в и создает объект SqlDataReader.

Перегрузки

Имя Описание
ExecuteReader()

Отправляет объект CommandTextConnection в и создает объект SqlDataReader.

ExecuteReader(CommandBehavior)

Отправляет объект в CommandText приложение и создает SqlDataReader одно из значений CommandBehaviorConnection.

ExecuteReader()

Исходный код:
System.Data.SqlClient.notsupported.cs

Отправляет объект CommandTextConnection в и создает объект SqlDataReader.

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

Возвращаемое значение

Объект SqlDataReader.

Исключения

Если задано значение Stream"Двоичный" или "VarBinary", используется Value значение "ДвоичныйSqlDbType" или "VarBinary". Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".

–или–

Если SqlDbType задано ValueTextReaderзначение "Char", "NChar", "NVarChar", "VarChar" или "Xml"

–или–

Значение SqlDbType , отличное от xml , использовалось при Value установке XmlReader.

При выполнении команды в заблокированной строке произошло исключение. Это исключение не создается при использовании Microsoft .NET Framework версии 1.0.

–или–

Время ожидания произошло во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".

Текущее состояние подключения закрыто. ExecuteReader() требует открытия SqlConnection.

–или–

Закрытый SqlConnection или удаленный во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".

Ошибка произошла в объекте StreamXmlReader или TextReader объекте во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".

XmlReader Объект Streamили TextReader объект был закрыт во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".

Примеры

В следующем примере создается объект SqlCommand, а затем выполняется путем передачи строки, которая является оператором Transact-SQL SELECT, и строкой для подключения к источнику данных.

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

        SqlCommand command = new SqlCommand(queryString, connection);
        using(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()
        Try
            While reader.Read()
                Console.WriteLine("{0}", reader(0))
            End While
        Finally
            ' Always call Close when done reading.
            reader.Close()
        End Try
    End Using
End Sub

Комментарии

CommandType Если для свойства задано StoredProcedureзначение, CommandText свойство должно иметь имя хранимой процедуры. Команда выполняет эту хранимую процедуру при вызове ExecuteReader.

Замечание

Если транзакция заблокирована, исключение может не вызываться.Read

Функция нескольких активных результирующих наборов (MARS) позволяет выполнять несколько действий с использованием одного подключения.

Если вы используете ExecuteReader или BeginExecuteReader используете XML-данные, SQL Server вернет все результаты XML, превышающие 2033 символов длиной в нескольких строках из 2033 символов. Чтобы избежать этого поведения, используйте ExecuteXmlReader или BeginExecuteXmlReader считывает запросы FOR XML.

См. также раздел

Применяется к

ExecuteReader(CommandBehavior)

Исходный код:
System.Data.SqlClient.notsupported.cs

Отправляет объект в CommandText приложение и создает SqlDataReader одно из значений CommandBehaviorConnection.

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

Параметры

behavior
CommandBehavior

Одно из значений CommandBehavior .

Возвращаемое значение

Объект SqlDataReader.

Исключения

Если задано значение Stream"Двоичный" или "VarBinary", используется Value значение "ДвоичныйSqlDbType" или "VarBinary". Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".

–или–

Если SqlDbType задано ValueTextReaderзначение "Char", "NChar", "NVarChar", "VarChar" или "Xml"

–или–

Значение SqlDbType , отличное от xml , использовалось при Value установке XmlReader.

Время ожидания произошло во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".

Ошибка произошла в объекте StreamXmlReader или TextReader объекте во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".

Закрытый SqlConnection или удаленный во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".

XmlReader Объект Streamили TextReader объект был закрыт во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".

Примеры

В следующем примере создается объект SqlCommand, а затем выполняется путем передачи строки, которая является оператором Transact-SQL SELECT, и строкой для подключения к источнику данных. CommandBehavior задан как CloseConnection.

private static void CreateCommand(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        connection.Open();
        using(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)
        Try
            While reader.Read()
                Console.WriteLine("{0}", reader(0))
            End While
        Finally
            ' Always call Close when done reading.
            reader.Close()
        End Try
    End Using
End Sub

Комментарии

CommandType Если для свойства задано StoredProcedureзначение, CommandText свойство должно иметь имя хранимой процедуры. Команда выполняет эту хранимую процедуру при вызове ExecuteReader.

Замечание

Используется SequentialAccess для получения больших значений и двоичных данных. В противном случае может произойти ошибка OutOfMemoryException, и соединение будет закрыто.

Функция нескольких активных результирующих наборов (MARS) позволяет выполнять несколько действий с использованием одного подключения.

Если вы используете ExecuteReader или BeginExecuteReader используете XML-данные, SQL Server вернет все результаты XML, превышающие 2033 символов длиной в нескольких строках из 2033 символов. Чтобы избежать этого поведения, используйте ExecuteXmlReader или BeginExecuteXmlReader считывает запросы FOR XML.

См. также раздел

Применяется к