jdbc - Tables Oracle avec $

jdbc - Tables Oracle avec $ - Java - Programmation

Marsh Posté le 16-01-2009 à 15:07:02    

:hello:  
 
Je suis en train d'essayer de faire une requête en java (jdbc) sur une table qui contient des $ dans le nom, et j'obtien une erreur sql de invalid character.
 
Est-ce qu'il y a un moyen de ne pas avoir ces erreurs ?
 
Merci,
 :jap:


---------------
.
Reply

Marsh Posté le 16-01-2009 à 15:07:02   

Reply

Marsh Posté le 16-01-2009 à 16:11:08    

il faut dé-spécialiser les caractères '&' (et les autres caractères spéciaux) en insérant un '\' avant

Reply

Marsh Posté le 16-01-2009 à 16:24:26    

Bidem a écrit :

il faut dé-spécialiser les caractères '&' (et les autres caractères spéciaux) en insérant un '\' avant


 
Mais du coup c'est le compilateur java qui n'est pas content  [:didier1809]


---------------
.
Reply

Marsh Posté le 16-01-2009 à 17:05:33    

'\\' ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 16-01-2009 à 17:06:35    


 
Non plus, j'ai essayé aussi  ;)


---------------
.
Reply

Marsh Posté le 16-01-2009 à 17:07:47    

Y dit  quoi ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 16-01-2009 à 17:09:31    

la même chose, illegal character :(
 
Et je n'arrive pas a "googler" ce truc, il ne tient pas compte du '$' dans mes recherches.


---------------
.
Reply

Marsh Posté le 17-01-2009 à 00:45:20    

Regarde là
http://www.orafaq.com/wiki/SQL_FAQ [...] queries.3F
 
Sinon, montre nous comment tu construis ta requête.

Reply

Marsh Posté le 17-01-2009 à 08:28:25    

query = "select PARENTITEMID from user.DB$"+DBID+"$USERBASE_ATTR where lower(plaintextfragment) = lower('system');";
 
 
si je met des \$, j'ai une erreur de compil java, et \\$ ne marche pas non plus :(


---------------
.
Reply

Marsh Posté le 17-01-2009 à 10:03:30    

En fait le $ ne pose pas de problème en Oracle.
S'il y en a un, c'est que Java fait quelque-chose de spécial avec le $.
Exemple sous SQLPLUS :  
SELECT * FROM V$DATABASE;
ne pose pas de problème du tout.
 


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 17-01-2009 à 10:03:30   

Reply

Marsh Posté le 17-01-2009 à 10:04:45    

Mara's dad a écrit :

En fait le $ ne pose pas de problème en Oracle.
S'il y en a un, c'est que Java fait quelque-chose de spécial avec le $.
Exemple sous SQLPLUS :  
SELECT * FROM V$DATABASE;
ne pose pas de problème du tout.
 


 
Oui, ca marche bien en sql directement, mais ca m'arrange pas des masses :D


---------------
.
Reply

Marsh Posté le 17-01-2009 à 10:05:46    

Ce que je veux dire, c'est cherche du coté de java, pas oracle.
Peut-être jdbc ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 17-01-2009 à 10:10:02    

Autre idée, affiche ta requête avant de l'envoyer à oracle.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 17-01-2009 à 10:17:24    

Remarque : lower('system') === 'system'


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 17-01-2009 à 10:46:22    

Mara's dad a écrit :

Remarque : lower('system') === 'system'


 
?
 
Sinon, j'affiche bien ma requète avant, elle est correcte, mais j'ai toujours le soucis des char.
Si je copy/paste dans sqlplus, ca roule
 

Query: select PARENTITEMID from user.DB$17$USERBASE_ATTR where lower(plaintextfragment) = lower('system')
java.sql.SQLException: ORA-00911: caractΦre non valide
 
        at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:74)


Message édité par didier1809 le 17-01-2009 à 10:50:10

---------------
.
Reply

Marsh Posté le 17-01-2009 à 11:03:21    

1- Lower ne sert à rien sur une chaine constante déjà en minuscule.
2- Essayes sans le ';' à la fin. Le ';' est utile pour SQLPLUS ou en PL/SQL pour délimiter les commandes. Mais dans ton contexte, il est inutile.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 17-01-2009 à 11:34:26    

Mara's dad a écrit :

1- Lower ne sert à rien sur une chaine constante déjà en minuscule.
2- Essayes sans le ';' à la fin. Le ';' est utile pour SQLPLUS ou en PL/SQL pour délimiter les commandes. Mais dans ton contexte, il est inutile.


 
C'était le point 2, c'était trop évident je ne le voyait pas  :D  
 
Bref, merci  :hello:


---------------
.
Reply

Marsh Posté le 17-01-2009 à 11:43:41    

De rien


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Sujets relatifs:

Leave a Replay

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