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.
См. также раздел
- Подключение и извлечение данных в ADO.NET
- Использование поставщика данных .NET Framework для SQL Server
- Общие сведения об ADO.NET