SqlCommand.ExecuteReader Metodo

Definizione

Invia CommandText a Connection e compila SqlDataReader.

Overload

ExecuteReader()

Invia CommandText a Connection e compila SqlDataReader.

ExecuteReader(CommandBehavior)

Invia CommandText a Connection e compila SqlDataReader mediante uno dei valori di CommandBehavior.

ExecuteReader()

Invia CommandText a Connection e compila 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

Restituisce

SqlDataReader

Un oggetto SqlDataReader.

Eccezioni

È stato usato un valore SqlDbType diverso da Binary o VarBinary quando Value era impostato su Stream. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

-oppure-

È stato usato un valore SqlDbType diverso da Char, NChar, NVarChar, VarChar o Xml quando Value era impostato su TextReader.

-oppure-

È stato usato un valore SqlDbType diverso da Xml quando Value era impostato su XmlReader.

È stata generata un'eccezione durante l'esecuzione del comando su una riga bloccata. Tale eccezione non viene generata quando si usa Microsoft .NET Framework Versione 1.0.

-oppure-

Si è verificato un timeout durante un'operazione di flusso. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

Lo stato corrente della connessione è chiuso. Con ExecuteReader() è richiesto un oggetto SqlConnection aperto.

-oppure-

L'elemento SqlConnection chiuso o eliminato durante l'operazione di flusso. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

Errore nell'oggetto Stream, XmlReader o TextReader durante un'operazione di flusso. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

L'oggetto Stream, XmlReader o TextReader è stato chiuso durante l'operazione di flusso. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

Esempio

Nell'esempio seguente viene creato e quindi eseguito passando una stringa che è un'istruzione TRANSACT-SQL SELECT e una stringa da utilizzare per connettersi SqlCommand all'origine dati.

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]));
        }
    }
}
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()
        While reader.Read()
            Console.WriteLine("{0}", reader(0))
        End While
    End Using
End Sub

Commenti

Quando la CommandType proprietà è impostata su StoredProcedure , la proprietà deve essere CommandText impostata sul nome del stored procedure. Il comando esegue questa stored procedure quando si chiama ExecuteReader .

Nota

Se una transazione è deadlock, è possibile che venga generata un'eccezione solo dopo Read la chiamata a .

La funzionalità MARS (Multiple Active Result Set) consente più azioni che usano la stessa connessione.

Se si usa o per accedere ai dati XML, SQL Server restituirà tutti i risultati XML di lunghezza superiore a 2.033 caratteri in più righe di ExecuteReader BeginExecuteReader 2.033 caratteri ciascuna. Per evitare questo comportamento, usare ExecuteXmlReader o per leggere query FOR BeginExecuteXmlReader XML.

Vedi anche

Si applica a

ExecuteReader(CommandBehavior)

Invia CommandText a Connection e compila SqlDataReader mediante uno dei valori di 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

Parametri

behavior
CommandBehavior

Uno dei valori di CommandBehavior.

Restituisce

SqlDataReader

Un oggetto SqlDataReader.

Eccezioni

È stato usato un valore SqlDbType diverso da Binary o VarBinary quando Value era impostato su Stream. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

-oppure-

È stato usato un valore SqlDbType diverso da Char, NChar, NVarChar, VarChar o Xml quando Value era impostato su TextReader.

-oppure-

È stato usato un valore SqlDbType diverso da Xml quando Value era impostato su XmlReader.

Si è verificato un timeout durante un'operazione di flusso. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

Errore nell'oggetto Stream, XmlReader o TextReader durante un'operazione di flusso. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

L'elemento SqlConnection chiuso o eliminato durante l'operazione di flusso. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

L'oggetto Stream, XmlReader o TextReader è stato chiuso durante l'operazione di flusso. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

Esempio

Nell'esempio seguente viene creato un oggetto , che viene quindi eseguito passando una stringa che è un'istruzione Transact-SQL SELECT e una stringa da usare per connettersi SqlCommand all'origine dati. CommandBehavior è impostato su CloseConnection.

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]));
        }
    }
}
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)
        While reader.Read()
            Console.WriteLine("{0}", reader(0))
        End While
    End Using
End Sub

Commenti

Quando la CommandType proprietà è impostata su StoredProcedure , la proprietà deve essere CommandText impostata sul nome del stored procedure. Il comando esegue questa stored procedure quando si chiama ExecuteReader .

Nota

Usare SequentialAccess per recuperare valori di grandi dimensioni e dati binari. In caso contrario, OutOfMemoryException potrebbe verificarsi un'eccezione e la connessione verrà chiusa.

La funzionalità MARS (Multiple Active Result Set) consente più azioni che usano la stessa connessione.

Se si usa o per accedere ai dati XML, SQL Server restituirà risultati XML di lunghezza superiore a 2.033 caratteri in più righe di ExecuteReader BeginExecuteReader 2.033 caratteri ciascuno. Per evitare questo comportamento, utilizzare ExecuteXmlReader o per leggere query FOR BeginExecuteXmlReader XML.

Vedi anche

Si applica a