Sdílet prostřednictvím


SqlCommand.ExecuteReader Metoda

Definice

Odešle do CommandTextConnection a vytvoří SqlDataReader.

Přetížení

ExecuteReader()

Odešle do CommandTextConnection a vytvoří SqlDataReader.

ExecuteReader(CommandBehavior)

Odešle hodnotu CommandText do a vytvoří SqlDataReader pomocí jedné z CommandBehaviorConnectionhodnot.

ExecuteReader()

Odešle do CommandTextConnection a vytvoří 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

Návraty

Objekt SqlDataReader .

Výjimky

Při SqlDbType nastavení na Streamhodnotu byla použita Value jiná hodnota než Binary nebo VarBinary. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

-nebo-

Při SqlDbType nastavení na TextReaderhodnotu se použila Value jiná hodnota než Char, NChar, NVarChar, VarChar nebo XML.

-nebo-

Při SqlDbType nastavení na XmlReaderhodnotu byla použita Value jiná hodnota než XML.

Při provádění příkazu na uzamčený řádek došlo k výjimce. Tato výjimka se negeneruje, pokud používáte rozhraní Microsoft .NET Framework verze 1.0.

-nebo-

Během operace streamování došlo k vypršení časového limitu. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Aktuální stav připojení je uzavřen. ExecuteReader() vyžaduje otevřenou SqlConnectionadresu .

-nebo-

Zavřený SqlConnection nebo vynechaný během operace streamování. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Během operace streamování došlo v objektu Streamnebo TextReaderXmlReader k chybě. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Objekt Streamnebo XmlReaderTextReader byl uzavřen během operace streamování. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Příklady

Následující příklad vytvoří SqlCommanda pak ho spustí předáním řetězce, který je příkazem Transact-SQL SELECT, a řetězce, který se má použít pro připojení ke zdroji dat.

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

Poznámky

CommandType Pokud je vlastnost nastavena na StoredProcedure, CommandText vlastnost by měla být nastavena na název uložené procedury. Příkaz spustí tuto uloženou proceduru při volání ExecuteReaderpříkazu .

Poznámka

Pokud je transakce zablokovaná, nemusí být vyvolána výjimka, dokud Read není volána.

Funkce MARS (Multiple Active Result Set) umožňuje používat více akcí pomocí stejného připojení.

Pokud používáte ExecuteReader data XML nebo BeginExecuteReader k datům XML, vrátí SQL Server všechny výsledky XML delší než 2 033 znaků ve více řádcích po 2 033 znacích. Chcete-li se tomuto chování vyhnout, použijte ExecuteXmlReader nebo BeginExecuteXmlReader ke čtení dotazů FOR XML.

Viz také

Platí pro

ExecuteReader(CommandBehavior)

Odešle hodnotu CommandText do a vytvoří SqlDataReader pomocí jedné z CommandBehaviorConnectionhodnot.

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 hodnot.

Návraty

Objekt SqlDataReader .

Výjimky

Při SqlDbType nastavení na Streamhodnotu byla použita Value jiná hodnota než Binary nebo VarBinary. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

-nebo-

Při SqlDbType nastavení na TextReaderhodnotu se použila Value jiná hodnota než Char, NChar, NVarChar, VarChar nebo XML.

-nebo-

Při SqlDbType nastavení na XmlReaderhodnotu byla použita Value jiná hodnota než XML.

Během operace streamování došlo k vypršení časového limitu. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Během operace streamování došlo v objektu Streamnebo TextReaderXmlReader k chybě. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Zavřený SqlConnection nebo vynechaný během operace streamování. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Objekt Streamnebo XmlReaderTextReader byl uzavřen během operace streamování. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Příklady

Následující příklad vytvoří SqlCommanda pak ho spustí předáním řetězce, který je příkazem Transact-SQL SELECT, a řetězce, který se má použít pro připojení ke zdroji dat. CommandBehavior je nastavená na CloseConnectionhodnotu .

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

Poznámky

CommandType Pokud je vlastnost nastavena na StoredProcedure, CommandText vlastnost by měla být nastavena na název uložené procedury. Příkaz spustí tuto uloženou proceduru při volání ExecuteReaderpříkazu .

Poznámka

Slouží SequentialAccess k načtení velkých hodnot a binárních dat. V opačném OutOfMemoryException případě může dojít k chybě a připojení bude ukončeno.

Funkce MARS (Multiple Active Result Set) umožňuje používat více akcí pomocí stejného připojení.

Pokud používáte ExecuteReader data XML nebo BeginExecuteReader k datům XML, vrátí SQL Server všechny výsledky XML delší než 2 033 znaků ve více řádcích po 2 033 znacích. Chcete-li se tomuto chování vyhnout, použijte ExecuteXmlReader nebo BeginExecuteXmlReader ke čtení dotazů FOR XML.

Viz také

Platí pro