SqlCommand.ExecuteReader Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Отправляет CommandText в Connection и строит SqlDataReader.
Перегрузки
ExecuteReader() |
Отправляет CommandText в Connection и строит SqlDataReader. |
ExecuteReader(CommandBehavior) |
Отправляет CommandText в Connection и формирует SqlDataReader с помощью одного из значений CommandBehavior. |
ExecuteReader()
Отправляет 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)
Отправляет 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.
См. также раздел
- Подключение и получение данных в ADO.NET
- Использование поставщика данных платформа .NET Framework для SQL Server
- Общие сведения об ADO.NET