SqlCommand.ExecuteReader Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| Имя | Описание |
|---|---|
| ExecuteReader() |
Отправляет объект CommandTextConnection в и создает объект SqlDataReader. |
| ExecuteReader(CommandBehavior) |
Отправляет объект в CommandText приложение и создает Connection одно из значений SqlDataReaderCommandBehavior. |
ExecuteReader()
- Исходный код:
- SqlCommand.cs
- Исходный код:
- SqlCommand.cs
- Исходный код:
- SqlCommand.cs
- Исходный код:
- SqlCommand.cs
Отправляет объект 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 , отличное
Binaryот илиVarBinaryиспользуемое, если Value задано значение Stream. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient". -
ЗначениеSqlDbType, отличное от
Char,NChar,NVarCharVarCharилиXmlиспользовалось при Value установкеTextReader. -
Значение SqlDbType , отличное от
Xmlиспользуемого при Value установке XmlReader.
- При выполнении команды в заблокированной строке произошло исключение. Это исключение не создается при использовании Microsoft .NET Framework версии 1.0.
- Время ожидания произошло во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".
- Текущее состояние подключения закрыто. ExecuteReader() требует открытия SqlConnection.
- Закрытый SqlConnection или удаленный во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".
Ошибка произошла в объекте StreamXmlReader или TextReader объекте во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".
Stream Объект XmlReaderили TextReader объект был закрыт во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".
Примеры
В следующем примере создается объект SqlCommand, а затем выполняется путем передачи строки, которая является оператором Transact-SQL SELECT, и строкой для подключения к источнику данных.
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]));
}
}
}
Комментарии
CommandType Если для свойства задано StoredProcedureзначение, CommandText свойство должно иметь имя хранимой процедуры. Команда выполняет эту хранимую процедуру при вызове ExecuteReader.
Замечание
Если транзакция заблокирована, исключение может не вызываться.Read
Функция нескольких активных результирующих наборов (MARS) позволяет выполнять несколько действий с использованием одного подключения.
Если вы используете ExecuteReader или BeginExecuteReader используете XML-данные, SQL Server вернет все результаты XML, превышающие 2033 символов длиной в нескольких строках из 2033 символов. Чтобы избежать этого поведения, используйте ExecuteXmlReader или BeginExecuteXmlReader считывает запросы FOR XML.
Применяется к
ExecuteReader(CommandBehavior)
- Исходный код:
- SqlCommand.cs
- Исходный код:
- SqlCommand.cs
- Исходный код:
- SqlCommand.cs
- Исходный код:
- SqlCommand.cs
Отправляет объект в CommandText приложение и создает Connection одно из значений SqlDataReaderCommandBehavior.
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.
Исключения
Время ожидания произошло во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".
Ошибка произошла в объекте StreamXmlReader или TextReader объекте во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".
Закрытый SqlConnection или удаленный во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".
Stream Объект XmlReaderили TextReader объект был закрыт во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи 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.