Прочитать на английском

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


SqlCommand.ExecuteReader Метод

Определение

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

Перегрузки

ExecuteReader()

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

ExecuteReader(CommandBehavior)

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

ExecuteReader()

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

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

C#
public System.Data.SqlClient.SqlDataReader ExecuteReader();

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

Объект 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, и строки, используемой для подключения к источнику данных.

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

Комментарии

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

Примечание

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

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

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

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

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

.NET 10 (package-provided) и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, 6 (package-provided), 7 (package-provided), 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)

ExecuteReader(CommandBehavior)

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

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

C#
public System.Data.SqlClient.SqlDataReader ExecuteReader(System.Data.CommandBehavior behavior);

Параметры

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.

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

Комментарии

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

Примечание

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

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

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

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

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

.NET 10 (package-provided) и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, 6 (package-provided), 7 (package-provided), 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)