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

JDBC Java Discussion :

[jdbc - Mysql] le caractere "\" disparait dans la


Sujet :

JDBC Java

  1. #1
    Membre habitué
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2005
    Messages : 175
    Points : 145
    Points
    145
    Par défaut [jdbc - Mysql] le caractere "\" disparait dans la
    voici un bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // saving the links 
                String query_link;
                Statement stmt = connection.createStatement();
                Iterator iterator = p.getLinkVector().iterator();
                while (iterator.hasNext()) {
                    Link l = (Link)(iterator.next());                
                    query_link = "INSERT INTO generic_link VALUES (" +
                            // we get a new unique ID for the link in its table
                            getNewIdinTable(TABLE_GENERIC_LINK) + ", " +
                            idGenericPartToBeSet + ", " +
                            "'" + l.getLinkFile().toString() + "', " +
                            l.getProjectDependance() + ", " + 
                            "'" + l.getName() + "')";
                    System.out.println("link setted : " + l.getLinkFile().toString());
                    stmt.executeUpdate(query_link);
                }
    ce code fonctionne tres bien et l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("link setted : " + l.getLinkFile().toString());
    affiche bien ce qui est prévu genre :
    link setted : C:\data\prog\eclipse\workspace\Faiveley stage 2005\manifest.mf

    par contre dans la base (Mysql) , je me retrouve avec :
    C:dataprogeclipseworkspaceFaiveley stage 2005manifest.mf

    ce qui n'est pas tres pratique pour ouvrir le dit-fichier bien entendu.

    je pense qu'il s'agit d'un probleme d'encodage de jeu de caracteres, mais je ne sais pas vraiment commet le règler. (nb : le champ en question est un VARCHAR)

  2. #2
    NGY
    NGY est déconnecté
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 164
    Points
    164
    Par défaut
    C'est parce que le \ est un caractère spécial.
    Utilise un PreparedStatement, ça téviteras ce genre de problèmes (et en plus c'est plus performant).
    Sinon, il faut doubler le \ (cf. de nombreux sujet qui traitent de ce problème).

  3. #3
    Membre habitué
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2005
    Messages : 175
    Points : 145
    Points
    145
    Par défaut
    je le savais pour java, pas pour mysql.

    je vais faire un preparedstatement de ce pas et je met résolu si ca marche (ya pas de raison)

  4. #4
    Membre habitué
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2005
    Messages : 175
    Points : 145
    Points
    145
    Par défaut
    effectivement avec un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
                // saving the links 
                String query_link;
                PreparedStatement pstmt;
    Iterator iterator = p.getLinkVector().iterator();
                while (iterator.hasNext()) {
                    Link l = (Link)(iterator.next());
                    query_link = "INSERT INTO project_link VALUES ( ?,?,?,?,?)";
                    pstmt = (PreparedStatement) connection.prepareStatement(query_link);
                    // we get a new unique ID for the link in its table :
                    pstmt.setInt(1, getNewIdinTable(TABLE_PROJECT_LINK).intValue());
                    pstmt.setInt(2, idProjectPartToBeSet.intValue());
                    pstmt.setString(3, l.getLinkFile().toString());
                    pstmt.setInt(4, l.getProjectDependance());
                    pstmt.setString(5, l.getName());
                    pstmt.executeUpdate();
                }
                pstmt.close();
    le probleme disparait, un bon point de plus pour les preparedStatement, et en plus on gagne en lisibilité.

  5. #5
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    bonjour, en fait si mes souvenir sont bon le probleme vien du languge sql et si je me trompe pas il faut adopter une syntaxe du genre "\\" en lui specifiant que "\" devient caractere pour forcer les caractere speciaux (il y aune syntaxe a lui donner je sais plus exactement comment du style FORCE "\" je crois...)
    "vaste programme"

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 01/08/2008, 11h40
  2. Chaine de caractere avec quote
    Par mactwist69 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 11/07/2008, 17h19
  3. [vbnet 1.1]Inserer deux simple quote sans texte dans une db
    Par ChristopheOce dans le forum Windows Forms
    Réponses: 8
    Dernier message: 15/03/2007, 08h51
  4. [Fonction] Quote et guillemet dans un textarea
    Par ddelec24 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/03/2007, 15h51
  5. Select et insert avec des caracteres speciaux (quote ')
    Par Paco75 dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/10/2006, 14h59

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