IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

problème d'accent mais pas seulement


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Par défaut problème d'accent mais pas seulement
    Bonjour,

    si je vous écris c'est parce que je suis face à un bug que j'ai du mal à comprendre...

    Je dispose de deux bases de données distinctes mais identiques (copie du script de création de tables, serveur apache, phpmyadmin, configurer à l'identique.

    Je souhaite copier des informations d'une table à une autre.

    Dans ma solution, je fais un select sur une table de ma base 1, puis je fais un insert pour chaque ligne dans ma base 2.

    L'erreur se produit lorsqu'une ligne comporte un accent... mais je ne vois pas du tout pourquoi, car, l'encodage est ok, dans la base 1, les accents sont bien visibles, quand je fais un affichage de la requete j'obtiens bien l'accent et une requete correcte...

    Le pire étant que lorsque je copie cette requete qui me renvoie une erreur via le programme java passe très bien si je la copie dans phpmyadmin (même avec un problème d'encodage, les quottes devraient tout de même permettre l'ajout à la base, même si les accents passent mal)

    Voici l'erreur soulevée par java :
    java.SWLException : Syntax error or access violation, message from server :"You have an error in your SQL syntax

    Si vous avez une solution... je comprend pas pourquoi sql n'en veut pas via java mais accepte via phpmyadmin...

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    Bonjour,

    Peut on avoir la requête stp? et le bout de code java tant qu'on y est

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Par défaut
    hey
    alors voici le code java :

    listeUser est une arraylist qui contient des instances d'Utilisateur avec nom/prenom...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int size = listeUser.size();
    for (int s=0 ; s<size ; s++){
    	Utilisateur util = listeUser.get(s);
    	util.insert(0);
    }
    dans ma fonction insert :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void insert(int a) throws SQLException {
    	String strSql = "";
    	strSql = "INSERT INTO Utilisateur(idUtilisateur, nomUtilisateur, loginUtilisateur, passwordUtilisateur, emailUtilisateur, telUtilisateur, IPUtilisateur) " +
    		"VALUES (\"" + this.id + "\" , \"" + this.nom + "\", \"" + this.login + "\" , \"" +this.pwd+"\" , \"" +this.mail+ "\" , \"" +this.tel+ "\" , \"" +this.IP+ "\" )";
     
    	System.out.println("sql : " + strSql);
    	JDBCRequete.insert(BASE, strSql);
    }
    ce qui est appelé avec JDBCRequete.insert, c'est tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    stmt = (Statement) conn.createStatement();
    stmt.executeUpdate(sql);
    voici le resultat du System.out.println() juste avant l'execution :

    INSERT INTO Utilisateur(idUtilisateur, nomUtilisateur,
    loginUtilisateur, passwordUtilisateur, emailUtilisateur,
    telUtilisateur, IPUtilisateur)
    VALUES ("5" , "Hervé Ana******ard",
    "herve" , "4f6e***********76597c6d4a12b3230" ,
    "ha*****rd@k****.com" , "0381*****" , "192.168.****" )

    Si j'enlève l'accent, ça marche. si je copie cette requete dans phpmyadmin, ça marche aussi ...

  4. #4
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    As tu essayé de remplacer les "é" par &eacute;?

    Ensuite les \" peuvent être remplacés par des simple cote '.
    Ceci ne changera rien mais je trouve ca plus lisible ^^

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Par défaut
    Étant donné que je ne cherche pas à faire du web mais une application java, le eacute ne me sert pas à grand chose !

    si mon affichage se faisait sur navigateur web je suis d'accord, mais là ça ne me sert pas vraiment. Sinon je suis obligé de repéré tous les accents avant l'insertion et à chaque select pour repérer les caractères accentués et les remplacés.

    Je sèche complètement, la requête refuse de s'executer... j'aurais encore compris si mysql avait remplacé le ' é ' par un ' ? ' ou un caractère ascii pour préciser l'erreur d'encodage mais la ça bloque alors que les quotes sont la...

  6. #6
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    Rien à voir avec le HTML mais plutot avec l'encodage.
    Pour information, il existe des bibliothèques pour gérer les accents si l'encodage de la base de données ne les accepte pas!

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import org.apache.commons.lang.StringEscapeUtils;
     
    public class Exemple{
        public static void main(String[] args)
        {
            String  init = "El&eacute;phant";
            String res = StringEscapeUtils.unescapeHtml(init);
            System.out.println(res);
        }
    }
    Ceci étant, il est vrai qu'il est plus évidant d'enregistrer directement l'accent et de ne pas utiliser ces bibliothèques si on ne fait pas de web mais la c'e=était pour vérifier le problème d'encodage.
    Sinon, en quoi est encodé ta base de données?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/04/2011, 12h00
  2. Réponses: 2
    Dernier message: 12/11/2010, 09h39
  3. Utilisation Zend, mais pas seulement
    Par mrjay42 dans le forum MVC
    Réponses: 1
    Dernier message: 12/10/2009, 17h59
  4. Réponses: 2
    Dernier message: 11/02/2008, 22h02
  5. [Cookies] Problème dans IE mais pas dans FF
    Par Manio 54 dans le forum Langage
    Réponses: 19
    Dernier message: 15/12/2005, 18h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo