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


SqlCommand.ExecuteReader Метод

Определение

Отправляет CommandText в Connection и строит SqlDataReader.

Перегрузки

ExecuteReader()

Отправляет CommandText в Connection и строит SqlDataReader.

ExecuteReader(CommandBehavior)

Отправляет CommandText в Connection и формирует SqlDataReader с помощью одного из значений CommandBehavior.

ExecuteReader()

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

Отправляет CommandText в Connection и строит 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.

Исключения

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

-или-

Значение , отличное SqlDbType от Char, NChar, NVarChar, VarChar или Xml , использовалось, если Value для параметра задано значение TextReader.

-или-

Объект , отличный SqlDbType от XML , использовался, если Value для параметра задано значение XmlReader.

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

-или-

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

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

-или-

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

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

Объект Stream, XmlReader или 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 в Connection и формирует SqlDataReader с помощью одного из значений CommandBehavior.

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.

Исключения

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

-или-

Значение , отличное SqlDbType от Char, NChar, NVarChar, VarChar или Xml , использовалось, если Value для параметра задано значение TextReader.

-или-

Объект , отличный SqlDbType от XML , использовался, если Value для параметра задано значение XmlReader.

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

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

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

Объект Stream, XmlReader или 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.

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

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