SqlCommand.ExecuteReader Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Overload
ExecuteReader() |
Invia a CommandTextConnection e compila un oggetto SqlDataReader . |
ExecuteReader(CommandBehavior) |
Invia a CommandTextConnection e compila un SqlDataReader oggetto utilizzando uno dei CommandBehavior valori . |
ExecuteReader()
Invia a CommandTextConnection e compila un oggetto 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
Restituisce
Un oggetto SqlDataReader.
Eccezioni
Un SqlDbType oggetto diverso da Binary o VarBinary è stato usato quando Value è stato impostato su Stream . Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.
-oppure-
Un SqlDbType oggetto diverso da Char, NChar, NVarChar, VarChar o Xml è stato usato quando Value è stato impostato su TextReader .
-oppure-
È SqlDbType stato utilizzato un valore diverso da Xml quando Value è stato 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. ExecuteReader() richiede un oggetto aperto SqlConnection .
-oppure-
L'elemento SqlConnection chiuso o eliminato durante l'operazione di flusso. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.
Si è verificato un errore in un Stream oggetto o XmlReaderTextReader durante un'operazione di streaming. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.
L'oggetto Stream o XmlReaderTextReader è stato chiuso durante un'operazione di streaming. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.
Esempio
Nell'esempio seguente viene creato un SqlCommandoggetto e quindi viene eseguito passando una stringa che è un'istruzione Transact-SQL SELECT e una stringa da usare per connettersi all'origine dati.
// <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>
}
Commenti
Quando la CommandType proprietà è impostata su StoredProcedure
, la CommandText proprietà deve essere impostata sul nome della stored procedure. Il comando esegue questa stored procedure quando si chiama ExecuteReader.
Nota
Se una transazione è deadlock, è possibile che non venga generata un'eccezione fino a quando Read non viene chiamata.
La funzionalità mars (Multiple Active Result Set) consente più azioni usando la stessa connessione.
Se si utilizza ExecuteReader o BeginExecuteReader per accedere ai dati XML, SQL Server restituirà risultati XML maggiori di 2.033 caratteri in più righe di 2.033 caratteri ciascuno. Per evitare questo comportamento, utilizzare ExecuteXmlReader o BeginExecuteXmlReader per leggere le query FOR XML.
Si applica a
ExecuteReader(CommandBehavior)
Invia a CommandTextConnection e compila un SqlDataReader oggetto utilizzando uno dei CommandBehavior valori .
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
Parametri
- behavior
- CommandBehavior
Uno dei valori di CommandBehavior.
Restituisce
Un oggetto SqlDataReader.
Eccezioni
Un SqlDbType oggetto diverso da Binary o VarBinary è stato usato quando Value è stato impostato su Stream . Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.
-oppure-
Un SqlDbType oggetto diverso da Char, NChar, NVarChar, VarChar o Xml è stato usato quando Value è stato impostato su TextReader .
-oppure-
È SqlDbType stato utilizzato un valore diverso da Xml quando Value è stato impostato su XmlReader .
Si è verificato un timeout durante un'operazione di flusso. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.
Si è verificato un errore in un Stream oggetto o XmlReaderTextReader durante un'operazione di streaming. 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 o XmlReaderTextReader è stato chiuso durante un'operazione di streaming. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.
Esempio
Nell'esempio seguente viene creato un SqlCommandoggetto e quindi viene eseguito passando una stringa che è un'istruzione Transact-SQL SELECT e una stringa da usare per connettersi all'origine dati. CommandBehavior è impostato su CloseConnection.
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]));
}
}
}
Commenti
Quando la CommandType proprietà è impostata su StoredProcedure
, la CommandText proprietà deve essere impostata sul nome della 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, potrebbe verificarsi un oggetto OutOfMemoryException e la connessione verrà chiusa.
La funzionalità mars (Multiple Active Result Set) consente più azioni usando la stessa connessione.
Se si utilizza ExecuteReader o BeginExecuteReader per accedere ai dati XML, SQL Server restituirà risultati XML maggiori di 2.033 caratteri in più righe di 2.033 caratteri ciascuno. Per evitare questo comportamento, utilizzare ExecuteXmlReader o BeginExecuteXmlReader per leggere le query FOR XML.