Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1716 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [JAVA/Postgresql] Caractère d'échappement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA/Postgresql] Caractère d'échappement

n°1386696
boumchakal
Posté le 13-06-2006 à 16:35:26  profilanswer
 

Salut,
 
Mon problème est assez simple !
Je fais une requète du genre :
 

Code :
  1. StringBuffer blabla = new StringBuffer();
  2. blabla.append("from table " );
  3.  .append("where type='" ).append(type)
  4.  .append("' and designation ='" ).append(designation)
  5.  .append("' and action='" ).append(action).append("'" );


 
Sauf que ma variable designation est une chaine de caractère du genre : "L'histoire c'est cool"
Et comme vous le constaté, désignation contient des apostrophes '
ça nous donnerai la requète sql :

Code :
  1. where type='toto' and designation='L'histoire c'est cool' and action='titi'


Evidement lors de l'exécution de la requète ça plante a ce niveau la :

Code :
  1. designation='L'histoire c'est cool


 
Quelqu'un a une idée ?


Message édité par boumchakal le 13-06-2006 à 16:36:36
mood
Publicité
Posté le 13-06-2006 à 16:35:26  profilanswer
 

n°1386703
boumchakal
Posté le 13-06-2006 à 16:38:44  profilanswer
 

J'ai testé des trucs du genre :
 

Code :
  1. designation=designation.replace("'","\\'" );


 

Code :
  1. designation=designation.replace("'","'''" );


 
sans succès :(

n°1386712
souk
Tourist
Posté le 13-06-2006 à 16:42:12  profilanswer
 

=> utiliser des prepared statements qui feront tous les échappement pour toi et qui t'éviterons des gros ennuis (genre sql injection etc etc)

n°1386735
boumchakal
Posté le 13-06-2006 à 16:52:14  profilanswer
 

souk a écrit :

=> utiliser des prepared statements qui feront tous les échappement pour toi et qui t'éviterons des gros ennuis (genre sql injection etc etc)


 
Je ne connais pas les Prepared Statements ... pouvez-vous m'en dire un peu plus ? Histoire d'avoir une piste pour chercher ?

n°1386760
souk
Tourist
Posté le 13-06-2006 à 16:59:14  profilanswer
 

google => java preparedStatement site:java.sun.com => ton bonheur

n°1387418
nemohp
Adepte du provisoire permanent
Posté le 14-06-2006 à 14:18:35  profilanswer
 

Code :
  1. designation=designation.replace("'","''" );

n°1387485
souk
Tourist
Posté le 14-06-2006 à 15:16:10  profilanswer
 

nemohp a écrit :

Code :
  1. designation=designation.replace("'","''" );



 
une bonne idée ca, maintenant y a plus qu'à escaper tous les autres caracteres a la mimine, les " et compagnie ... [:pingouino]

n°1387530
boumchakal
Posté le 14-06-2006 à 15:41:44  profilanswer
 

vi souk a raison, l'utilisation des PreparedStatements est casiement impératif pour un code propre et élégant :)
 
Par contre j'utilise Spring & Hibernate ... alors ce code ci dessous ne m'arrange pas scpécialement :

Code :
  1. String url = "jdbc:mysql://localhost/dbessai";
  2.     Connection conn =
  3.         DriverManager.getConnection(url, "user", "password" );
  4. PreparedStatement st = conn.prepareStatement(
  5.     "UPDATE personne SET Age = ? " +
  6.     "WHERE Nom = ? "
  7.     );


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [JAVA/Postgresql] Caractère d'échappement

 

Sujets relatifs
navigateur internet au sein d'une application JavaEst-il possible de créer une DLL C Sharp interopérable avec JAVA ?
Chaine de caractère espaceget_meta avec eregi -> caractére bizare ...
caractère dans liste déroulanteacceder a des classes java
[JAVA] Symbole € (resolu)java et word
help me java wordCherche une API JAVA pour parser une DTD
Plus de sujets relatifs à : [JAVA/Postgresql] Caractère d'échappement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR