java et les guillemt

java et les guillemt - Java - Programmation

Marsh Posté le 14-05-2004 à 12:02:06    

Salut,
 
je suis sur un projet et j'aurai besoin de savoir si c'est possible et surtout comment faire pour gérer les guillemets dans un chaîne de caractères.
Je m'explique. J'ai un site web en jsp et une base mysql. Une des pages contient un formulaire avec un des champs (type text) qui doit contenir pas mal de texte. Le problème c'est que dès que l'utilisateur entre le caractère double quote, il est interprété comme la fin de la chaîne de caratère et donc la requete de mise à jour de la bd plante et ca fait chier.
 
Voilà, j'espère que j'ai été assez clair.
Si quelqu'un voit comment résoudre ce petit problème merci de m'aider.
 
Izno

Reply

Marsh Posté le 14-05-2004 à 12:02:06   

Reply

Marsh Posté le 14-05-2004 à 12:06:14    

oui, tu fais un PreparedStatement et tu "binde" la chaine au statement avant de l'exécuter.
 
On va surement te parler d'échapper le quotes mais c'est nul, utilise le binding.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-05-2004 à 12:11:26    

Est ce que tu pourrais m'expilquer un peu plus ce que tu entends par là...
 
Merci

Reply

Marsh Posté le 14-05-2004 à 12:16:11    

Code :
  1. PreparedStatement ps = con.prepareStatement("SELECT * FROM customer_tbl WHERE customer_id = ?" );
  2.   ResultSet rs = null;
  3.     ps.setString(1,""+i);
  4.     rs = ps.executeQuery();


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-05-2004 à 12:23:01    

nraynaud a écrit :


On va surement te parler d'échapper le quotes mais c'est nul, utilise le binding.


 
pourquoi c'est nul ?


---------------
IVG en france
Reply

Marsh Posté le 14-05-2004 à 12:31:12    

uriel a écrit :

pourquoi c'est nul ?

1) ça nécessite de recopier la chaine, puis de faire des contaténations inutiles.
2) les bidouilles sur l'échappement, on oublie toujours un truc
3) on va oublier d'échapper un truc spécifique à la base, ou de la mauvaise manière (on double les quotes normalement, mais certaines bases veulent des \, etc.)


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-05-2004 à 12:33:11    

ok, je comprends.


---------------
IVG en france
Reply

Marsh Posté le 14-05-2004 à 12:34:43    

en fait l'ordre des motifs, c'est 2-3-1


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-05-2004 à 12:37:12    

nraynaud a écrit :

en fait l'ordre des motifs, c'est 2-3-1


 
c'est surtout le point 3 qui me titille, sachant que en ce moment on fait un truc pour mysql mais qui sera peut etre ammene a fonctionner sous db2.
Mai le point 2 aurait du etre inventer pour moi (comment perdre son temps sur des trucs comme ca)


---------------
IVG en france
Reply

Marsh Posté le 14-05-2004 à 12:50:37    

gfive a écrit :

:cry: ""+i
ke trouve ça pabô! :D


 
merwde...Pabon bouton!


Message édité par gfive le 14-05-2004 à 12:51:45
Reply

Marsh Posté le 14-05-2004 à 12:50:37   

Reply

Marsh Posté le 14-05-2004 à 12:54:00    

gfive a écrit :

merwde...Pabon bouton!

String.valueOf()


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-05-2004 à 12:56:26    

uriel a écrit :


Mai le point 2 aurait du etre inventer pour moi (comment perdre son temps sur des trucs comme ca)

C'est surtout que ça va se finir par une "SQL injection vulnerability" sur bugtrack. Alors qu'on connait la méthode pour éviter ça à coup sur.
 
Il faut découper les responsabilités des gens, comme on le fait pour les classes. Les trucs de la base, c'est aux dev du driver de se démerder avec.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-05-2004 à 12:58:16    

nraynaud a écrit :

Code :
  1. PreparedStatement ps = con.prepareStatement("SELECT * FROM customer_tbl WHERE customer_id = ?" );
  2.   ResultSet rs = null;
  3.     ps.setString(1,""+i);
  4.     rs = ps.executeQuery();




pourquoi pas un setInt plutot que de transformer i en chaine ?

Reply

Marsh Posté le 14-05-2004 à 13:13:05    

lorill a écrit :

pourquoi pas un setInt plutot que de transformer i en chaine ?

heu passke le code, j'ai été le piquer sur le net à coup de google et je l'ai modifié à l'arrache.
 
 
par contre, pourquoi il y avait ça dans le code de départ ???


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-05-2004 à 13:15:13    

Pkoi ""+i??
 
C'est à cause des feignasses qui préfèrent utiliser ça plutôt que de faire String.valueOf(i).
 
Cai mal! :D

Reply

Marsh Posté le 14-05-2004 à 13:25:00    

gfive a écrit :

Pkoi ""+i??
 
C'est à cause des feignasses qui préfèrent utiliser ça plutôt que de faire String.valueOf(i).


nan mais surtout que la c'est crétin de le transformer en chaine

Reply

Marsh Posté le 14-05-2004 à 13:30:58    

lorill a écrit :

nan mais surtout que la c'est crétin de le transformer en chaine

tiens :
http://www.javaworld.com/javaworld [...] power.html
 
il y a peut-être une explication.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-05-2004 à 13:44:44    


pas vraiment, non  [:sinclaire]

Reply

Marsh Posté le 14-05-2004 à 13:46:38    

lorill a écrit :

pas vraiment, non  [:sinclaire]

le produit de coupe, encore une fois ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-05-2004 à 13:52:32    

nraynaud a écrit :

le produit de coupe, encore une fois ?


sans doute, surtout que page2 dans leur explication de DebuggableStatement, ils ont implémenté setInt()  [:ziiio]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed