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.
Wysyła element CommandText do pliku Connection i tworzy element SqlDataReader.
Przeciążenia
ExecuteReader() |
Wysyła element CommandText do pliku Connection i tworzy element SqlDataReader. |
ExecuteReader(CommandBehavior) |
Wysyła element CommandText do obiektu Connectioni tworzy SqlDataReader element przy użyciu jednej z CommandBehavior wartości. |
ExecuteReader()
Wysyła element CommandText do pliku Connection i tworzy element 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
Zwraca
Obiekt SqlDataReader.
Wyjątki
Użyto SqlDbType innego elementu 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 innego niż Char, NChar, NVarChar, VarChar lub Xml, gdy Value ustawiono wartość TextReader.
-lub-
Inny SqlDbType niż Xml był używany, gdy Value ustawiono wartość XmlReader.
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-
Wystąpił limit czasu podczas operacji przesyłania strumieniowego. 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() wymaga otwartego SqlConnectionelementu .
-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 Streamlub 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 służącym do nawiązywania połączenia ze źródłem danych.
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
Uwagi
CommandType Gdy właściwość jest ustawiona na StoredProcedure
, CommandText właściwość powinna być ustawiona na nazwę procedury składowanej. Polecenie wykonuje tę procedurę składowaną po wywołaniu metody ExecuteReader.
Uwaga
Jeśli transakcja zostanie zakleszona, wyjątek może nie zostać zgłoszony do Read momentu 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 lub BeginExecuteReader uzyskujesz dostęp do danych XML, SQL Server zwróci wszystkie wyniki XML większe niż 2033 znaki w wielu wierszach o długości 2033 znaków. Aby uniknąć tego zachowania, użyj ExecuteXmlReader polecenia lub BeginExecuteXmlReader odczytu dla zapytań XML.
Zobacz też
Dotyczy
ExecuteReader(CommandBehavior)
Wysyła element CommandText do obiektu Connectioni tworzy SqlDataReader element przy użyciu jednej z CommandBehavior wartości.
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
Parametry
- behavior
- CommandBehavior
Jedna z CommandBehavior wartości.
Zwraca
Obiekt SqlDataReader.
Wyjątki
Użyto SqlDbType innego elementu 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 innego niż Char, NChar, NVarChar, VarChar lub Xml, gdy Value ustawiono wartość TextReader.
-lub-
Inny SqlDbType niż Xml był używany, gdy Value ustawiono wartość XmlReader.
Wystąpił limit czasu 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.
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 Streamlub 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 służącym do nawiązywania połączenia ze źródłem danych. CommandBehavior jest ustawiona na CloseConnectionwartość .
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
Uwagi
CommandType Gdy właściwość jest ustawiona na StoredProcedure
, CommandText właściwość powinna być ustawiona na nazwę procedury składowanej. Polecenie wykonuje tę procedurę składowaną po wywołaniu 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 , a 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 lub BeginExecuteReader uzyskujesz dostęp do danych XML, SQL Server zwróci wszystkie wyniki XML większe niż 2033 znaki w wielu wierszach o długości 2033 znaków. Aby uniknąć tego zachowania, użyj ExecuteXmlReader polecenia lub BeginExecuteXmlReader odczytu dla zapytań XML.
Zobacz też
- Łączenie i pobieranie danych w ADO.NET
- Korzystanie z dostawcy danych .NET Framework dla SQL Server
- Omówienie ADO.NET