Bonjour à tous !
Je suis confronté à un sérieux problème bien tordu
Grosso modo, je dispose d'une application Swing qui se connecter à Oracle (10.2.0.4) via JDBC... jusque là tout va bien...
Chez moi pas de soucis, tout fonctionne impec' ! (j'ai fait des tests sur différentes version d'Oracle XE, Oracle normal, 10.x.x.x ...)
Par contre chez mon client, ca craind un max !
Dès que j'execute un insert depuis mon application, j'obtiens la stacktrace suivante :
En y regardant de plus prêt, il s'avère que le problème se situe au niveau suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 java.sql.SQLException: Violation de protocole at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70) at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:263) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:271) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:445) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1053) at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:183) at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:942) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1222) at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1706) at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:4912) at oracle.jdbc.driver.OracleStatementWrapper.executeUpdate(OracleStatementWrapper.java:371) at xxxx at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272) at java.awt.Component.processMouseEvent(Component.java:6263) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6028) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2475) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
si je fait à la place un :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 s.executeUpdate(query, columReturn); ResultSet keys = s.getGeneratedKeys(); if (keys.next()) { Long id = getLong(keys, 1); return id; }
tout fonctionne impec' !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 s.executeUpdate(query);
Mon soucis, c'est que mon application travail sur Oracle et MySQL et que le code si dessus est commun au deux SGBD, donc j'aimerai le conserver telquel !
Je n'arrive pas à comprendre pourquoi sur mes environnements pas de soucis, alors que chez mon client ca ne le fait pas...
C'est un peu comme si, lorsque l'on execute un INSERT, leur sgbd ne nous autorisait pas à récupérer une valeur en retour...
Mais moi j'en ai besoin de ce fichut ID générer lors de l'INSERT !
Des pistes ? des idées ? des explications ? je prends tout !![]()
Partager