Probléme de concaténation dans un string

nadriel -  
zobbo Messages postés 9 Statut Membre -
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

  1. Utilisateur anonyme
     
    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
  2. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    '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
  3. nadriel
     
    Oui pareil avec String.Format :s
    0
    1. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      Et es-tu sur que
      element
      n'est pas vide?
      0
    2. nadriel
       
      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
  4. zobbo Messages postés 9 Statut Membre 21
     
    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