Probléme de concaténation dans un string

Fermé
nadriel - Modifié par Whismeril le 19/03/2015 à 07:26
zobbo Messages postés 9 Date d'inscription jeudi 16 septembre 2010 Statut Membre Dernière intervention 19 mars 2015 - 19 mars 2015 à 14:15
Bonjour,

Je suis en train de développer un programme a des fins pédagogique

ce programme permet entre autre d'attribuer manuellement des droits a des utilisateurs sans passer directement par la base de donnée (MYSQL)

mais voila je n'arrive pas a concaténer ma requete ... c'est bête je sais mais je ne vois pas pourquoi ...

toutes les solutions que je trouve sur le net ne fonctionne pas

Voici le petit bout de code qui pause probléme :
sql = "UPDATE client SET valid_client = '1' WHERE valid_client = '0' AND id_client = "+ element;
update.CommandText = sql; //variable contenant id_client

J'ai aussi essayé
sql = "UPDATE client SET valid_client = '1' WHERE valid_client = '0' AND id_client = '{0}'", element;

j'ai déjà vérifié ma variable "element", celle ci me donne bien l'id du bon client coché dans une listview.

quand j'affiche via un MessageBox.Show(sql);
cela me donne "UPDATE client SET valid_client = '1' WHERE valid_client ="

il n'y a donc pas ma variable pris en compte ...
mes variables sont des strings.

Merci de votre aide désolé si certain d'entre vous trouves cela plus que basique

EDIT: Précision du langage dans la coloration syntaxique.
...

4 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
19 mars 2015 à 07:51
Bonjour, messageBox n'est pas un outil de débugage.

Pour ce code
        private void TestNadriel()
        {
            string element = "2";

            string sql = string.Format("UPDATE client SET valid_client = '1' WHERE valid_client = '0' AND id_client = '{0}'", element);
        }


Je mets un point d'arrêt à la ligne 3 (Click Droit / Point d'arrêt, ou F9)


Quand je lance l'exécution, le programme s'arrête avant de lire cette instruction.

Si je survole la variable avec ma souris, je voie qu'elle est null


Si j'ai besoin de voir le contenue de cette variable tout au long de mon débugage je la mets en espion (Click Droit / Ajouter un Espion) qui viendra s'afficher sous la fenêtre de code


Je n'ai plus qu'a exécuter pas à pas (avec F10 F11 ou ces flèches


Et regarder comment ça évolue


Dans ce débuggage la concaténation (avec le code de gravgun) c'est correctement déroulée.
1
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
18 mars 2015 à 22:12
'lut
sql = "UPDATE client SET valid_client = '1' WHERE valid_client = '0' AND id_client = '{0}'", element;
C'est pas correct, à mon avis ça ne compile même pas. As-tu tenté avec
String.Format
?
sql = String.Format("UPDATE client SET valid_client = '1' WHERE valid_client = '0' AND id_client = '{0}'", element);
0
Oui pareil avec String.Format :s
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
18 mars 2015 à 22:16
Et es-tu sur que
element
n'est pas vide?
0
element est théoriquement chargédes id_client provenant d'une requête SQL
quand je met élément dans un MessageBox.show(); ça me retourne les id_clients
après si vous avez un solutions pour vérifier plus en profondeur je suis preneur étant débutant en c# mes connaissance sont très limité ^^
0
zobbo Messages postés 9 Date d'inscription jeudi 16 septembre 2010 Statut Membre Dernière intervention 19 mars 2015 21
Modifié par Whismeril le 19/03/2015 à 16:55
Merci pour le petit rappel au niveau du mode pas a pas et des espions j'en avais besoin ;)

j'ai trouvé une solution

etant donnée que ma requête ce situe dans un if verifiant une checkbox j'ai pu recupere la valeu id comme ceci
if (_e.Checked)
                {

                    string sql = _e.Text; // Récupération de id_client
                    

                    try
                    {
                        MySqlConnection conn = new MySqlConnection("Database='ticketingv3';server='127.0.0.1';User Id='root';pwd=''");
                        MySqlCommand update = conn.CreateCommand();
                        sql = String.Format("UPDATE client SET valid_client = '1' WHERE valid_client = '0' AND id_client = '{0}'", sql);
                        update.CommandText = sql; //variable contenant id_client
                        conn.Open();
                        listView1.Items[compteur].SubItems[2].Text = "true";
                        MySqlDataReader reader = update.ExecuteReader();

                        


                    }
                    catch
                    {
                        MessageBox.Show("Erreur");
                    }
                     

                }


ça fonctionne mais il reste un problème que je dois résoudre : cela ne fonctionne pas si l'utilisateur coche plusieurs case afin de validé un groupe de clients

voici a quoi ressemble mon appli : les nombres a coté des checkBox sont bien les bon id client ^^
0