Passage de paramètres aux requetes

Résolu
vmontagnon Messages postés 27 Date d'inscription mardi 29 novembre 2005 Statut Membre Dernière intervention 29 mars 2008 - 22 nov. 2006 à 18:25
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 27 nov. 2006 à 12:59
Bonjour,

Je suis en train de développer une IHM en C# sur une base MySQL sous VS2005. Je veux utiliser les fonctionnalités de .NET 2 mais j'ai un pb de passage de paramètres à mes requetes INSERT/UPDATE/DELETE. Tout ce qui est déplacement sur les enregistrements fonctionne correctement (premier, suivant, dernier....) mais j'ai un pb chaque fois que j'ai besoin de passer des paramètres.
Ci-dessous une portion de mon code qui devrait être suffisante

string chaineCnx = "Server=localhost;Database=xxxx;Uid=xxxxx;Pwd=xxxxxxx;";
MySqlConnection connexionMySQL = new MySql.Data.MySqlClient.MySqlConnection(chaineCnx);
// Creation du DataSet
donneesChargees = new DataSet();
donneesChargees.Locale = System.Globalization.CultureInfo.InvariantCulture;

// Chargement des données de la table refPannes dans le DataSet
monDataAdapterMySQL = new MySqlDataAdapter("select * from ref_Pannes", connexionMySQL);

// Preparation de la requete de suppression        
monDataAdapterMySQL.DeleteCommand = new MySqlCommand("DELETE FROM REF_PANNES WHERE idRefPANNE=?idRefPanne",connexionMySQL);
monDataAdapterMySQL.DeleteCommand.Parameters.Add("?idRefPanne", MySqlDbType.Int32);

monDataAdapterMySQL.Fill(donneesChargees,"ref_pannes");

// Liaison du connecteur de données à la table RefPannes
monBindingSource.DataSource = donneesChargees;
monBindingSource.DataMember = "ref_pannes";
tbxIdRefPanne.DataBindings.Add("text", monBindingSource, "idRefPanne", true);
tbxDescription.DataBindings.Add("text", monBindingSource, "Descriptif", true);
tbxLibelle.DataBindings.Add("text", monBindingSource, "Libelle", true);

Lors d"un clic sur un bouton je veux par exemple supprimer un fichier avec le code suivant :

            this.monBindingSource.EndEdit();
            this.monBindingSource.RemoveCurrent();
            this.monDataAdapterMySQL.Update(donneesChargees, "ref_pannes");

biensur je déclenche une erreur car aucun param n'est passé à a ma requete (le param est en fait NULL)....

Je suis preneur de tout conseil...
merci

4 réponses

vmontagnon Messages postés 27 Date d'inscription mardi 29 novembre 2005 Statut Membre Dernière intervention 29 mars 2008
27 nov. 2006 à 12:39
Salut,

ouaip, c'est vrai..... mais je me suis demandé si ma question avait interessé quelqu'un..... :-)
En fait, on peut lier les paramètres de la requête aux données du DataSet en utilisant la petite modification suivante (par rapport au code donnée ci-dessus).

                MySqlParameter qryInsParam_1 = new MySqlParameter("?idRefPanne", MySqlDbType.Int32);
                qryInsParam_1.SourceColumn = "idRefPanne";
                qryInsParam_1.Direction = ParameterDirection.InputOutput;
                monDataAdapterMySQL.InsertCommand.Parameters.Add(qryInsParam_1);

Si le reste du code est correct (liaison avec le BindingSource et les contrôles du Formulaire) ça marche bien ...

Vincent
3
vmontagnon Messages postés 27 Date d'inscription mardi 29 novembre 2005 Statut Membre Dernière intervention 29 mars 2008
27 nov. 2006 à 12:02
Bon... je me suis débrouillé tout seul.... alors je clos la question.. :-)
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
27 nov. 2006 à 12:26
Salut

Et si tu donnais la solution pour que les personnes qui auront le meme probleme que toi par la suite puisse trouver facilement ?

Mx
MVP C# 
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
27 nov. 2006 à 12:59
Merci :)

en fait, je t'avoue que j'avais meme pas vu passer ta question

Mx
MVP C# 
0
Rejoignez-nous