Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur de syntaxe

C#, windows form, sql

Sujet résolu
    1 avril 2012 à 12:04:30

    Bonjour,

    Débutant en langage C#, j'ai commencer ma première application en fenêtre, hors je trouve qu'il manque pas mal de ressource en francais sur le net concernant le C# en fenêtre. Je fait donc appel à vous pour m'aider à résoudre un problème.

    Voici ma situation :

    J'ai relié mon application fenêtre à une base de données Access 2010, celle-ci est parfaitement bien relié, j'arrive a afficher la totalité de la table hors lorsque je veut faire une recherche plus précise dans celle-ci, impossible pour moi d'y arriver. Mon application fenêtre est composé d'une textbox, d'un bouton et enfin d'une dataGridView, je souhaiterais marquer dans la textbox le nom, puis valider sur le bouton ce qui afficherais toutes les données avec comme nom celui inséré dans la textbox. Voici le bout de code qui ne fonctionne pas :

    private void m_select()
            {
                /*            this.rq_sql = "INSERT INTO TB_LIVRET ([Cocktail], [Ingrédient], [Dose]) " +
                              "VALUES ('" + this.txt_Cocktail.Text + "','" + this.txt_Ingrédient.Text + "', '" + this.txt_Dose.Text + "');";*/
                this.oDS = new DataSet();
                this.rq_sql = "SELECT * FROM TB_PERSONNE WHERE [(Nom_personne)]" + "VALUES ('" + this.txt_nom.Text + "');";
                this.oCMD = new System.Data.OleDb.OleDbCommand(this.rq_sql, this.oCNX); //La commande pour le texte
                this.oDA = new System.Data.OleDb.OleDbDataAdapter(this.oCMD);
                this.oDA.Fill(this.oDS, "rows");
                this.dataGridView1.DataSource = this.oDS;
                this.dataGridView1.DataMember = "rows";
    


    La message d'erreur que je reçois est le suivant :

    Image utilisateur

    Je vous remercie d'avance pour votre aide, et reste disponible pour d'éventuelles renseignement suplémentaires.

    Cordialement,
    LordZerty. :)
    • Partager sur Facebook
    • Partager sur Twitter
      1 avril 2012 à 13:05:09

      Et ta requête Sql, tu l'as testée?
      this.rq_sql =SELECT * FROM TB_PERSONNE WHERE [(Nom_personne)]" + "VALUES ('" + this.txt_nom.Text + "');";
      

      Car des requêtes comme ca j'ai jamais vu pour un select...
      • Partager sur Facebook
      • Partager sur Twitter
        1 avril 2012 à 13:29:30

        Enfaite je souhaiterais faire la requête suivante :

        SELECT TB_PERSONNE.ID_personne, TB_PERSONNE.Nom_personne, TB_PERSONNE.Prenom_personne FROM TB_PERSONNE WHERE (((TB_PERSONNE.Nom_personne)='BRUNO'));
        


        Hors je ne sais pas trop comment faire pour que a la place de 'BRUNO' il y est le contenue de ma TextBox...
        • Partager sur Facebook
        • Partager sur Twitter
          1 avril 2012 à 13:35:12

          bonjour

          à la place de BRUNO:
          '"+ taTextBox.Text +"'
          • Partager sur Facebook
          • Partager sur Twitter
            1 avril 2012 à 13:47:49

            Merci beaucoup.

            En effet sa fonctionne, voici la syntaxe exacte :

            "SELECT TB_PERSONNE.ID_personne, TB_PERSONNE.Nom_personne, TB_PERSONNE.Prenom_personne FROM TB_PERSONNE WHERE (((TB_PERSONNE.Nom_personne)='" + this.txt_nom.Text + "'));";
            


            Désolé du dérangement pour un problème aussi bête. ^^

            Cordialement,
            LordZerty
            • Partager sur Facebook
            • Partager sur Twitter
              1 avril 2012 à 14:13:14

              La bonne façon de procéder est la suivante :

              var query = "SELECT * FROM [TB_PERSONNE] WHERE [Nom_personne] = ?";
              this.oCMD = new System.Data.OleDb.OleDbCommand(query, this.oCNX);
              this.oCMD.Parameters.AddWithValue("Nom_personne", this.txt_nom.Text);
              

              On ne construit jamais une requête SQL en concaténant des strings, on utilise les paramètres. Ca évite (entre autres) le genre de problèmes que tu as rencontrés. :)
              • Partager sur Facebook
              • Partager sur Twitter
                1 avril 2012 à 14:20:40

                ce qui m'a choquer c'était quand même le VALUES dans la clause WHERE ... Sinon,comme orwell a dit le mieux est d'utiliser les paramètres pour éviter l'injection Sql.
                • Partager sur Facebook
                • Partager sur Twitter

                Erreur de syntaxe

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown