Esecuzione di un comando

Si applica a: .NET Framework .NET Standard

Scarica ADO.NET

Il provider di dati Microsoft SqlClient per SQL Server include l'oggetto SqlCommand che eredita da DbCommand. Questo oggetto espone i metodi per eseguire i comandi in base al tipo di comando e al valore restituito desiderato, come descritto nella tabella seguente.

Comando Valore restituito
ExecuteReader Restituisce un oggetto DataReader.
ExecuteScalar Restituisce un singolo valore scalare.
ExecuteNonQuery Esegue un comando che non restituisce righe.
ExecuteXMLReader Restituisce un valore XmlReader. Disponibile solo per un oggetto SqlCommand.

Ogni oggetto comando fortemente tipizzato supporta anche un'enumerazione CommandType che specifica la modalità di interpretazione di una stringa di comando, come descritto nella tabella seguente.

CommandType Descrizione
Text Comando SQL che definisce le istruzioni da eseguire nell'origine dati.
StoredProcedure Nome della stored procedure. È possibile usare la proprietà Parameters di un comando per accedere a parametri di input e output e a valori restituiti indipendentemente dal metodo Execute chiamato.
TableDirect Nome di una tabella.

Importante

Quando si usa ExecuteReader, non è possibile accedere ai valori restituiti e ai parametri di output fino a quando DataReader non viene chiuso.

Esempio

Nell'esempio di codice seguente viene illustrato come creare un oggetto SqlCommand per eseguire una stored procedure impostando le relative proprietà. Per specificare il parametro di input per la stored procedure, viene usato un oggetto SqlParameter. Il comando viene eseguito usando il metodo ExecuteReader e l'output di SqlDataReader viene visualizzato nella finestra della console.

static void GetSalesByCategory(string connectionString,
    string categoryName)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        // Create the command and set its properties.
        SqlCommand command = new SqlCommand();
        command.Connection = connection;
        command.CommandText = "SalesByCategory";
        command.CommandType = CommandType.StoredProcedure;

        // Add the input parameter and set its properties.
        SqlParameter parameter = new SqlParameter();
        parameter.ParameterName = "@CategoryName";
        parameter.SqlDbType = SqlDbType.NVarChar;
        parameter.Direction = ParameterDirection.Input;
        parameter.Value = categoryName;

        // Add the parameter to the Parameters collection.
        command.Parameters.Add(parameter);

        // Open the connection and execute the reader.
        connection.Open();
        using (SqlDataReader reader = command.ExecuteReader())
        {
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    Console.WriteLine("{0}: {1:C}", reader[0], reader[1]);
                }
            }
            else
            {
                Console.WriteLine("No rows found.");
            }
            reader.Close();
        }
    }
}

Risoluzione dei problemi dei comandi

Il provider di dati Microsoft SqlClient per SQL Server aggiunge contatori di diagnostica per consentire il rilevamento di problemi intermittenti correlati a esecuzioni di comandi non riuscite. Per altre informazioni, vedere Contatori di diagnostica in SqlClient.

Vedi anche