Share via


Exécution d'une commande (ADO.NET)

Mise à jour : November 2007

Chaque fournisseur de données .NET Framework inclus avec le .NET Framework possède son propre objet de commande qui hérite de DbCommand. Le fournisseur de données .NET Framework pour OLE DB inclut un objet OleDbCommand, le fournisseur de données .NET Framework pour SQL Server inclut un objet SqlCommand, le fournisseur de données .NET Framework pour ODBC inclut un objet OdbcCommand et le fournisseur de données .NET Framework pour Oracle inclut un objet OracleCommand. Chacun de ces objets expose des méthodes pour exécuter les commandes en fonction du type de commande et de la valeur de retour souhaitée, comme cela est décrit dans le tableau ci-dessous.

Commande

Valeur de retour

ExecuteReader

Retourne un objet DataReader.

ExecuteScalar

Retourne une valeur scalaire unique.

ExecuteNonQuery

Exécute une commande qui ne retourne aucune ligne.

ExecuteXMLReader

Retourne un XmlReader. Disponible pour un objet SqlCommand uniquement.

Chaque objet de commande fortement typé prend également en charge une énumération CommandType qui spécifie la manière dont une chaîne de commande est interprétée, comme cela est décrit dans le tableau ci-dessous.

CommandType

Description

Text

Commande SQL qui définit les instructions à exécuter au niveau de la source de données.

StoredProcedure

Nom de la procédure stockée. Vous pouvez utiliser la propriété Parameters d'une commande pour accéder aux paramètres d'entrée et de sortie et aux valeurs de retour, quelle que soit la méthode Execute appelée. Lorsque vous utilisez ExecuteReader, les valeurs de retour et les paramètres de sortie ne seront pas accessibles tant que DataReader ne sera pas fermé.

TableDirect

Nom d'une table.

Exemple

L'exemple de code ci-dessous montre comment créer un objet SqlCommand pour exécuter une procédure stockée en définissant ses propriétés. Un objet SqlParameter permet de spécifier le paramètre d'entrée de la procédure stockée. La commande est exécutée à l'aide de la méthode ExecuteReader et la sortie de SqlDataReader est affichée dans la fenêtre de console.

Shared Sub GetSalesByCategory(ByVal connectionString As String, _
    ByVal categoryName As String)

    Using connection As New SqlConnection(connectionString)

        ' Create the command and set its properties.
        Dim command As SqlCommand = New SqlCommand()
        command.Connection = connection
        command.CommandText = "SalesByCategory"
        command.CommandType = CommandType.StoredProcedure

        ' Add the input parameter and set its properties.
        Dim parameter As 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()
        Dim reader As SqlDataReader = command.ExecuteReader()

        If reader.HasRows Then
            Do While reader.Read()
                Console.WriteLine("{0}: {1:C}", _
                  reader(0), reader(1))
            Loop
        Else
            Console.WriteLine("No rows returned.")
        End If
    End Using
End Sub
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();
        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();
    }
}

Dépannage des commandes

Le fournisseur de données .NET Framework pour SQL Server ajoute des compteurs de performance pour vous permettre de détecter des problèmes intermittents liés à des échecs lors de l'exécution des commandes. Pour plus d'informations, voir Compteurs de performance (ADO.NET).

Voir aussi

Autres ressources

Commandes et paramètres (ADO.NET)

DataAdapters et DataReaders (ADO.NET)

DataReaders (ADO.NET)