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


SqlCommand.ExecuteReader Метод

Определение

Перегрузки

ExecuteReader()

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

ExecuteReader(CommandBehavior)

Отправляет в CommandTextConnection и создает SqlDataReader , используя одно из значений CommandBehavior .

ExecuteReader()

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

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

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

Объект SqlDataReader.

Исключения

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

-или-

Если SqlDbType для параметра задано значение TextReader , кроме Char, NChar, NVarChar, VarChar или Xml, использовался Value объект , отличный от Char, NChar, NVarChar, VarChar или Xml.

-или-

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

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

-или-

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

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

-или-

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

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

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

Примеры

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

// <Snippet1>
using System;
using System.Data;
using Microsoft.Data.SqlClient;



class Program
{
    static void Main()
    {
        string str = "Data Source=(local);Initial Catalog=Northwind;"
            + "Integrated Security=SSPI";
        string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
        CreateCommand(qs, str);
    }

    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]));
            }
        }
    }
    // </Snippet1>
}

Комментарии

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

Примечание

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

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

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

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

ExecuteReader(CommandBehavior)

Отправляет в CommandTextConnection и создает SqlDataReader , используя одно из значений CommandBehavior .

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

Параметры

behavior
CommandBehavior

Одно из значений перечисления CommandBehavior.

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

Объект SqlDataReader.

Исключения

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

-или-

Если SqlDbType для параметра задано значение TextReader , кроме Char, NChar, NVarChar, VarChar или Xml, использовался Value объект , отличный от Char, NChar, NVarChar, VarChar или Xml.

-или-

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

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

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

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

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

Примеры

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

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

class Program
{
    static void Main()
    {
        string str = "Data Source=(local);Initial Catalog=Northwind;"
            + "Integrated Security=SSPI";
        string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
        CreateCommand(qs, str);
    }

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

Комментарии

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

Примечание

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

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

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

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