Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'insertion dans une base mysql

Récupération d'un JTextField

Sujet résolu
    18 juin 2015 à 21:22:46

    Bonjour,

    je vous explique mon problème: j'ai un champs nommé Motif sous mysql de type texte et j'ai un TextField créé sous NetBeans. J'arrive à insérer dans le champs d'autres saisies sauf les saisies contenant des simples guillemets. Si je saisis par exemple : Accident d'un enfant, ça me renvoie une erreur.

    Quelqu'un connait une façon de résoudre ce genre de problèmes? 

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      18 juin 2015 à 22:29:50

      Bonjour.

      As-tu essayer d'exécuter la requête directement sur la BDD (pas via Java) ?

      Comment construis-tu la requête ?
      Utilises-tu le preparedStatement ? Cela permet d'éviter les fails et permet de formatter correctement les données (la quote étant un caractère réservé).

      • Partager sur Facebook
      • Partager sur Twitter
      Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
        19 juin 2015 à 23:08:55

        Bonjour et merci pour votre réponse,

        malheureusement je n'ai pas utilisé le preparedStatement et j'ai testé la requête directement mais ça ne marche pas.

        Y'aurait-il un moyen pour contourner ce problème?

        Merci

        • Partager sur Facebook
        • Partager sur Twitter
          19 juin 2015 à 23:52:28

          Cedec a écrit:

          Y'aurait-il un moyen pour contourner ce problème?

          En nous montrant la requête complète ainsi que le message d'erreur ?

          • Partager sur Facebook
          • Partager sur Twitter
          Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
            25 juin 2015 à 9:56:38

            Pinguet62 a écrit:

            Cedec a écrit:

            Y'aurait-il un moyen pour contourner ce problème?

            En nous montrant la requête complète ainsi que le message d'erreur ?

            Merci pour votre réponse.

            Voici la requête:

            String requete = "INSERT INTO Conge_Pris(Id_Employe,Id_Conge,Date_Debut,Date_Fin,Motif)"
                                    + "VALUES('" + JCIdentifiantEmploye.getSelectedItem() + "','" + JCIdentifiantConge.getSelectedItem() + "','" + ((JTextField) JDateDebut.getDateEditor().getUiComponent()).getText() + "','" + ((JTextField) JDateFin.getDateEditor().getUiComponent()).getText() + "','" + JTMotif.getText() + "')";


            Les valeurs proviennent de champs d'un JFrame.

            Et voici le message d’erreur après avoir cliqué sur le bouton Enregistrer



            • Partager sur Facebook
            • Partager sur Twitter
              25 juin 2015 à 10:33:54

              Aurais-tu la requête finale générée ?

              Construire une requête de cette manière est dangereux :

              • Si l'utilisateur saisi des caractères spéciaux cela plantera.
                Par exemple des quotes (apostrophe) dans le champ "motif".
                C'est une des causes de l'injection SQL. 
              • Le format des dates dépend de tellement de choses qu'il faut 10ans d'expérience pour savoir saisir une date du 1er coup...
                (yyyy-MM-dd ? ou dd/MM/yyyy ? ou autre ?)

              C'est pour cela qu'il vaut mieux utiliser PreparedStatement.

              • Partager sur Facebook
              • Partager sur Twitter
              Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                30 juin 2015 à 10:37:27

                Pinguet62 a écrit:

                Aurais-tu la requête finale générée ?

                Construire une requête de cette manière est dangereux :

                • Si l'utilisateur saisi des caractères spéciaux cela plantera.
                  Par exemple des quotes (apostrophe) dans le champ "motif".
                  C'est une des causes de l'injection SQL. 
                • Le format des dates dépend de tellement de choses qu'il faut 10ans d'expérience pour savoir saisir une date du 1er coup...
                  (yyyy-MM-dd ? ou dd/MM/yyyy ? ou autre ?)

                C'est pour cela qu'il vaut mieux utiliser PreparedStatement.

                Merci beaucoup pour ton aide. J'ai utilisé ta méthode et j'ai réussi  J'ai vu que je dois m'habituer aux requêtes préparées maintenant. Elles sont d'une grande utilité.

                • Partager sur Facebook
                • Partager sur Twitter

                Problème d'insertion dans une base mysql

                × 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