SqlCommand.ExecuteReader Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przeciążenia
ExecuteReader() |
Wysyła element CommandText do pliku Connection i tworzy element SqlDataReader . |
ExecuteReader(CommandBehavior) |
Wysyła element CommandText do obiektu Connection i tworzy obiekt SqlDataReader przy użyciu jednej z CommandBehavior wartości. |
ExecuteReader()
Wysyła element CommandText do pliku Connection i tworzy element 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
Zwraca
Obiekt SqlDataReader.
Wyjątki
Użyto SqlDbType wartości innej niż Binary lub VarBinary , gdy Value ustawiono wartość Stream . Aby uzyskać więcej informacji na temat przesyłania strumieniowego, zobacz Obsługa przesyłania strumieniowego SqlClient.
-lub-
Użyto SqlDbType wartości innej niż Char, NChar, NVarChar, VarChar lub Xml , gdy Value ustawiono wartość TextReader .
-lub-
Element SqlDbType inny niż Xml był używany, gdy Value został ustawiony na XmlReader wartość .
Wystąpił wyjątek podczas wykonywania polecenia względem zablokowanego wiersza. Ten wyjątek nie jest generowany podczas korzystania z usługi Microsoft .NET Framework w wersji 1.0.
-lub-
Podczas operacji przesyłania strumieniowego wystąpiło przekroczenie limitu czasu. Aby uzyskać więcej informacji na temat przesyłania strumieniowego, zobacz Obsługa przesyłania strumieniowego SqlClient.
Bieżący stan połączenia jest zamknięty. ExecuteReader() program wymaga otwartego pliku SqlConnection .
-lub-
Zamknięty SqlConnection lub porzucony podczas operacji przesyłania strumieniowego. Aby uzyskać więcej informacji na temat przesyłania strumieniowego, zobacz Obsługa przesyłania strumieniowego SqlClient.
Wystąpił błąd w StreamXmlReader obiekcie lub TextReader podczas operacji przesyłania strumieniowego. Aby uzyskać więcej informacji na temat przesyłania strumieniowego, zobacz Obsługa przesyłania strumieniowego SqlClient.
XmlReader Obiekt Stream lub TextReader został zamknięty podczas operacji przesyłania strumieniowego. Aby uzyskać więcej informacji na temat przesyłania strumieniowego, zobacz Obsługa przesyłania strumieniowego SqlClient.
Przykłady
Poniższy przykład tworzy obiekt SqlCommand, a następnie wykonuje go, przekazując ciąg, który jest instrukcją Transact-SQL SELECT i ciągiem używanym do nawiązywania połączenia ze źródłem danych.
// <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>
}
Uwagi
CommandType Gdy właściwość jest ustawiona na StoredProcedure
wartość , CommandText właściwość powinna być ustawiona na nazwę procedury składowanej. Polecenie wykonuje tę procedurę składowaną podczas wywoływania metody ExecuteReader.
Uwaga
Jeśli transakcja jest zakleszczone, wyjątek może nie zostać zgłoszony do momentu Read wywołania.
Funkcja wielu aktywnych zestawów wyników (MARS) umożliwia wykonywanie wielu akcji przy użyciu tego samego połączenia.
Jeśli używasz ExecuteReader funkcji lub BeginExecuteReader do uzyskiwania dostępu do danych XML, SQL Server zwróci wyniki XML większe niż 2033 znaków w wielu wierszach o długości 2033 znaków. Aby uniknąć tego zachowania, użyj polecenia ExecuteXmlReader lub BeginExecuteXmlReader do odczytu dla zapytań XML.
Dotyczy
ExecuteReader(CommandBehavior)
Wysyła element CommandText do obiektu Connection i tworzy obiekt SqlDataReader przy użyciu jednej z CommandBehavior wartości.
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
Parametry
- behavior
- CommandBehavior
CommandBehavior Jedna z wartości.
Zwraca
Obiekt SqlDataReader.
Wyjątki
Użyto SqlDbType wartości innej niż Binary lub VarBinary , gdy Value ustawiono wartość Stream . Aby uzyskać więcej informacji na temat przesyłania strumieniowego, zobacz Obsługa przesyłania strumieniowego SqlClient.
-lub-
Użyto SqlDbType wartości innej niż Char, NChar, NVarChar, VarChar lub Xml , gdy Value ustawiono wartość TextReader .
-lub-
Element SqlDbType inny niż Xml był używany, gdy Value został ustawiony na XmlReader wartość .
Podczas operacji przesyłania strumieniowego wystąpiło przekroczenie limitu czasu. Aby uzyskać więcej informacji na temat przesyłania strumieniowego, zobacz Obsługa przesyłania strumieniowego SqlClient.
Wystąpił błąd w StreamXmlReader obiekcie lub TextReader podczas operacji przesyłania strumieniowego. Aby uzyskać więcej informacji na temat przesyłania strumieniowego, zobacz Obsługa przesyłania strumieniowego SqlClient.
Zamknięty SqlConnection lub porzucony podczas operacji przesyłania strumieniowego. Aby uzyskać więcej informacji na temat przesyłania strumieniowego, zobacz Obsługa przesyłania strumieniowego SqlClient.
XmlReader Obiekt Stream lub TextReader został zamknięty podczas operacji przesyłania strumieniowego. Aby uzyskać więcej informacji na temat przesyłania strumieniowego, zobacz Obsługa przesyłania strumieniowego SqlClient.
Przykłady
Poniższy przykład tworzy obiekt SqlCommand, a następnie wykonuje go, przekazując ciąg, który jest instrukcją Transact-SQL SELECT i ciągiem używanym do nawiązywania połączenia ze źródłem danych. CommandBehavior parametr jest ustawiony na CloseConnectionwartość .
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]));
}
}
}
Uwagi
CommandType Gdy właściwość jest ustawiona na StoredProcedure
wartość , CommandText właściwość powinna być ustawiona na nazwę procedury składowanej. Polecenie wykonuje tę procedurę składowaną podczas wywoływania metody ExecuteReader.
Uwaga
Służy SequentialAccess do pobierania dużych wartości i danych binarnych. W przeciwnym razie może wystąpić błąd OutOfMemoryException i połączenie zostanie zamknięte.
Funkcja wielu aktywnych zestawów wyników (MARS) umożliwia wykonywanie wielu akcji przy użyciu tego samego połączenia.
Jeśli używasz ExecuteReader funkcji lub BeginExecuteReader do uzyskiwania dostępu do danych XML, SQL Server zwróci wyniki XML większe niż 2033 znaków w wielu wierszach o długości 2033 znaków. Aby uniknąć tego zachowania, użyj polecenia ExecuteXmlReader lub BeginExecuteXmlReader do odczytu dla zapytań XML.