Problème d'exception [Résolu]

cs_redbar 114 Messages postés mardi 26 janvier 2010Date d'inscription 26 mai 2014 Dernière intervention - 21 juin 2011 à 16:41 - Dernière réponse : cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention
- 30 juin 2011 à 10:53
Bonjour à tous
j'ai besoin de votre aide.
Je développé en ce moment une application de gestion de stock.
j'ai ecrit une méthode qui me permet d'enregistrer un nom contenant une apostrophe (ex: POINT D'ACCES) dans ma base de données
voici la méthode :

// remplace l'apostrophe <<'>> par par deux côtes <<''>>
public String apostrophe(String s){
return s.replace("'", "''");
}


cette méthode fonctionne bien, car les informations vont dans la base comme je veux.
Mais lorsque j'ai besoin d'une information sur un produit dont le nom de produit contient une apostrophe (ex: POINT D'ACCES), le programme leve une exception qui est la suivant:

org.postgresql.util.PSQLException: ERREUR: erreur de syntaxe sur ou près de « accès »
  Position : 83
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:252)
at mti.Vente$1.actionPerformed(Vente.java:266)
at javax.swing.JComboBox.fireActionEvent(Unknown Source)
at javax.swing.JComboBox.setSelectedItem(Unknown Source)
at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.Dialog$1.run(Unknown Source)
at java.awt.Dialog$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at java.awt.Dialog.setVisible(Unknown Source)
at mti.Vente.(Vente.java:88)
at mti.RechercheClient$1.actionPerformed(RechercheClient.java:167)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)



Et depuis je n'arrive pas à gérer cette exception.

J'utilise PostgreSQL comme SGBD

Merci pour votre aide.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 30 juin 2011 à 10:53
3
Merci
Le prioncipal est que tu ais trouvé une solution. Sinon, je pense que la solution de GodConan : remplacer les quotes par un autre caractère est intéressante pour régler simplement le problème.

N'oublie pas d'accepter la réponse.

Merci cs_Julien39 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_Julien39
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 22 juin 2011 à 08:45
0
Merci
Pour les quotes, la gestion est différente en fonction de la base de données utilisée, je ne connais pas celle de postGre, tu peux toujours essayer de remplacer s.replace("'", "''"); par s.replace("'", "\\'");
Commenter la réponse de cs_Julien39
cs_GodConan 2116 Messages postés samedi 8 novembre 2003Date d'inscriptionContributeurStatut 6 octobre 2012 Dernière intervention - 22 juin 2011 à 18:04
0
Merci
salut,

si tu veux vraiment etre tranquil utilise un caractere valide non utilisé ;o) comme "@" ;o) ou le "_" (moins sur) ce n est pas tres propre mais c est asser simple... le mieu evidement ;o)c est que le SGBD ;o) comprenne tout....

GodConan ;o)
Commenter la réponse de cs_GodConan
cs_redbar 114 Messages postés mardi 26 janvier 2010Date d'inscription 26 mai 2014 Dernière intervention - 23 juin 2011 à 11:42
0
Merci
Bonjour à tous
Merci pour vos conseils. j'ai essayer comme ça au pif de faire appele à ma méthode apostrophe :
// remplace l'apostrophe <<'>> par par deux côtes <<''>>
public String apostrophe(String s){
return s.replace("'", "''");
}

à tout endroit où j'enregistre des noms dans la base et ou je consulte information de la base.
et cela fonctionne bien .
Merci bcp les gars.
Commenter la réponse de cs_redbar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.