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 :

Caractères spéciaux


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de if_zen
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 275
    Par défaut Caractères spéciaux
    Bonjour,

    Je n'arrive pas à retrouver la fonction qui permet de convertir un StringBuffer de manière à le rendre acceptable dans une requete SQL. Je voudrais remplacer les ' par des \', alors j'ai converti mon StringBuffer en string pour ensuite faire un replaceAll, mais j'ai beau mettre 1, 2, 3 ou 4 \ j'ai toujours le meme problème. en affichant la requete j'arrive bien à avoir un truc du style \', mais c'est toujours pas pris en compte par HSQL qui plante toujours au meme endroit.
    Pour info, j'ai voulu enregistrer le contenu d'un fichier dans un StringBuffer avant de le placer dans ma requete.

    Vous avez des idées ? Merci :-)

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 97
    Par défaut
    Il faut que tu utilise un PreparedStatement dans lequel tu mets
    ta requête SQL où tu remplaces le mot contenant le caractères spécial par le caractère "?".

    Ensuite sur ton instance de preparedStatement tu utilises la
    méthode setString(1, "\") pour remplacer ton prémier "?" par le mot contenant le caractère special.

    Ensuite tu fais executeQuery().

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 109
    Par défaut
    sinon, en général, en SQL il faut doubler les quotes pour les échapper ('' et non \')

  4. #4
    Membre très actif
    Avatar de if_zen
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 275
    Par défaut
    Merci

    Je ne connaissais pas les preparedStatement. Par contre j'ai encore un soucis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    String requete = "INSERT INTO Contrat VALUES (null,4,?,'ererererer','1/1/2200','1/1/55554','',now());
    	if (getFichier().isFile())
    	{
    		try {
    			ps =  clu.getConnection().prepareStatement(requete);
    			flot = new FileInputStream(getFichier());
    			ps.setBinaryStream(1, flot, (int) getFichier().length());
    			ps.executeUpdate();
    		}
    		catch (SQLException ex) { e = new Erreur(ex.getMessage()); }
    		catch (FileNotFoundException fnfe ) { e = new Erreur("TODO :fichier non trouve."); }
    		finally { try {ps.close(); } catch (Exception ex2) {} }			
    	}
    Théoriquement, le preparedStatement aurait du me remplacer mon "?" par un contenu de type Blob, mais il n'en est rien, et le point d'interrogation reste planté là...
    Vous voyez d'ou ça peut venir ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 97
    Par défaut
    Et si tu crées un object Blob et que tu l'insère dans ta requête
    avec prepareStmt.setBlob (1, blob) ?

  6. #6
    Membre très actif
    Avatar de if_zen
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 275
    Par défaut
    Heuuu je suis en train de péter une durite là...
    T'aurais pas un exemple pour convertir un stringbuffer en blob... ?
    J'a bien essayé un .toString().getBytes() pour avoir un byte[] étant donné qu'il paraitrait qu'un blob ne soit qu'un byte[], mais ... marche pas...

    C'est quand meme dingue que ce foutu setBinaryStream fasse rien !

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

Discussions similaires

  1. caractères spéciaux
    Par mat10000 dans le forum Flash
    Réponses: 16
    Dernier message: 23/10/2003, 13h22
  2. Où trouver la liste des caractères spéciaux?
    Par gamez dans le forum Langage
    Réponses: 3
    Dernier message: 19/08/2003, 17h54
  3. Transformation XSL et caractères spéciaux
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 4
    Dernier message: 28/04/2003, 10h38
  4. [Sybase] filtre sur caractères spéciaux
    Par montelieri dans le forum Sybase
    Réponses: 4
    Dernier message: 07/04/2003, 16h49
  5. Traiter les caractères spéciaux
    Par ricola dans le forum Langage
    Réponses: 2
    Dernier message: 20/02/2003, 09h23

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