Comment : définir et obtenir des paramètres pour des objets de commande
Mise à jour : novembre 2007
Si vous utilisez des objets de commande pour exécuter des commandes sur une base de données, les instructions SQL ou les procédures stockées que vous exécutez requièrent souvent des paramètres. Par exemple, une instruction Update simple requérant des paramètres pourrait ressembler à ceci :
UPDATE Employees
SET LastName = @LastName, FirstName = @FirstName, BirthDate = @BirthDate
WHERE (EmployeeID = @EmployeeID)
Lorsque cette instruction est exécutée, vous devez fournir des valeurs pour tous les paramètres (@LastName, @FirstName, @BirthDate et @EmployeeID). Pour ce faire, vous utilisez des objets paramètres. Les objets de commande prennent en charge une collection de paramètres (par exemple, Parameters) qui contient un jeu d'objets de type SqlParameter, OleDbParameter, OdbcParameter ou OracleParameter. Il existe dans la collection un objet paramètre pour chaque paramètre à passer. En outre, si vous appelez une procédure stockée, vous aurez peut-être besoin d'un paramètre supplémentaire pour accepter la valeur de retour de la procédure.
Remarque : |
---|
En général, si vous utilisez un groupe de données, vous n'exécutez pas les commandes directement. Vous passez plutôt des paramètres aux requêtes TableAdapter. Pour plus d'informations, consultez Comment : remplir de données un groupe de données. |
Définition des valeurs de paramètre
Avant d'exécuter une commande, vous devez définir une valeur pour chacun de ses paramètres.
Pour définir une valeur de paramètre
Définissez la propriété Value pour chaque paramètre de la collection de paramètres de la commande.
L'exemple suivant montre comment définir les paramètres avant d'exécuter une commande référençant une procédure stockée. Cet exemple suppose que vous avez déjà configuré la collection de paramètres à l'aide de trois paramètres appelés au_id, au_lname et au_fname. Pour plus de clarté, chaque paramètre est désigné par son nom.
With oleDbCommand1 .CommandText = "UpdateAuthor" .CommandType = System.Data.CommandType.StoredProcedure .Parameters("au_id").Value = "172-32-1176" .Parameters("au_lname").Value = "White" .Parameters("au_fname").Value = "Johnson" End With OleDbConnection1.Open() oleDbCommand1.ExecuteNonQuery() OleDbConnection1.Close()
oleDbCommand1.CommandText = "UpdateAuthor"; oleDbCommand1.CommandType = System.Data.CommandType.StoredProcedure; oleDbCommand1.Parameters["au_id"].Value = "172-32-1176"; oleDbCommand1.Parameters["au_lname"].Value = "White"; oleDbCommand1.Parameters["au_fname"].Value = "Johnson"; oleDbConnection1.Open(); oleDbCommand1.ExecuteNonQuery(); oleDbConnection1.Close();
Obtention des valeurs de retour
Les procédures stockées passent souvent des valeurs à l'application qui les a appelées.
Pour obtenir les valeurs retournées par les procédures
Créez des paramètres dont la propriété Direction a la valeur Output ou InputOutput (si le paramètre est utilisé dans la procédure à la fois pour recevoir et envoyer des valeurs). Vérifiez que le type de données du paramètre correspond à celui de la valeur de retour attendue.
Après avoir exécuté la procédure, lisez la propriété Value du paramètre renvoyé.
Pour obtenir la valeur de retour d'une procédure
Créez des paramètres dont la propriété Direction a la valeur ReturnValue.
Remarque : L'objet paramètre de la valeur de retour doit être le premier élément de la collection de paramètres.
Vérifiez que le type de données du paramètre correspond à celui de la valeur de retour attendue.
Remarque : Les instructions Update, Insert et Delete SQL retournent une valeur entière indiquant le nombre d'enregistrements modifiés par l'instruction. Vous pouvez obtenir cette valeur en tant que valeur de retour de la méthode ExecuteNonQuery. Pour plus d'informations, consultez Modification de données à l'aide de procédures stockées (ADO.NET).
L'exemple suivant montre comment obtenir la valeur de retour d'une procédure stockée appelée CountAuthors. Il suppose que le premier paramètre de la collection de paramètres de la commande est appelé « retvalue » et qu'il est configuré avec une direction de ReturnValue.
Dim returnValue As Integer
oleDbCommand1.CommandText = "CountAuthors"
oleDbCommand1.CommandType = CommandType.StoredProcedure
oleDbConnection1.Open()
oleDbCommand1.ExecuteNonQuery()
oleDbConnection1.Close()
returnValue = CType(oleDbCommand1.Parameters("retvalue").Value, Integer)
MessageBox.Show("Return Value = " & returnValue.ToString())
int returnValue;
oleDbCommand1.CommandText = "CountAuthors";
oleDbCommand1.CommandType = CommandType.StoredProcedure;
oleDbConnection1.Open();
oleDbCommand1.ExecuteNonQuery();
oleDbConnection1.Close();
returnValue = (int)(oleDbCommand1.Parameters["retvalue"].Value);
MessageBox.Show("Return Value = " + returnValue.ToString());
Voir aussi
Tâches
Comment : créer et exécuter une instruction SQL qui retourne des lignes
Comment : créer et exécuter une instruction SQL qui retourne une seule valeur
Comment : créer et exécuter une instruction SQL qui ne retourne aucune valeur
Comment : exécuter une procédure stockée qui retourne des lignes
Comment : exécuter une procédure stockée qui retourne une seule valeur
Comment : exécuter une procédure stockée qui ne retourne aucune valeur
Concepts
Paramètres de DataAdapter (ADO.NET)
Modification de données à l'aide de procédures stockées (ADO.NET)