Bonjour chers Collègues !
Je suis actuellement en train de développer une application en java qui attaque une base de données de type DB2 qui se situe sur un serveur AS400.
Ma connexion s'effectue et c'est lorsque je fais mon SELECT que l'erreur fatidique apparait.
J'ai une table dans laquelle il y a plusieurs colonnes. Je peux faire un SELECT sur n'importe quelle colonne mais lorsque je le fais sur celle-ci en particulier, j'obtiens :
Message: [SQL0443] *N
SQLState: 38501
ErrorCode: -443
Je suis allé voir sur le site d'IBM pour découvrir la description de cette erreur :
SQL0443
Message Text: Trigger program or external routine detected an error.
Cause Text: Either a trigger program, external procedure, or external function detected and returned an error to SQL. If the error occurred in a trigger program, the trigger was on table &4 in schema &5. If the error occurred in an external procedure or function, the external name is &4 in schema &5. The associated text is &6. If the error occurred in a trigger program, the associated text is the type of trigger program. If the error occurred in an external function, the associated text is the text of the error message returned from the external function.
Recovery Text: Refer to the joblog for more information regarding the detected error. Correct the error and try the request again.
SQLCODE or SQLCODEs: -443
SQLSTATE or SQLSTATEs: 38xxx, 38501
Lorsque je teste ma requête sur Iseries (émulateur pour l'AS400), cette dernière fonctionne parfaitement.
S'agit il des différents caractères qui peuvent se trouver dans cette colonne nommée 'NOM' (dans laquelle on retrouve des noms avec des & ou des ' ou des - ou des espaces ou des points) ?
J'ai essayé la requête avec WHERE 1=0 pour voir si elle s’exécutait normalement et effectivement, elle fonctionne mais bien entendu ne me renvoie aucune ligne (logique avec ce critère de sélection).
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 public DataBase(String url, String login, String pass) throws SQLException { Connection connection = DriverManager.getConnection(url, login, pass); Statement stt = connection.createStatement(); try{ //ResultSet resultat1 = stt.executeQuery("SELECT DAT, HEUR, CODE_EXP, EXPEDITEUR, REFERENCE, TYP, STATUT, DESTINATAIRE FROM MINOSFIC.UB001V01"); ResultSet resultat2 = stt.executeQuery("SELECT NOM FROM MINOSFIC.UB001V01 "); while(resultat2.next() /*&& resultat2.next()*/){ System.out.println("pwet"); /*String date = resultat1.getString("DAT"); String heure = resultat1.getString("HEUR"); String code_exp= resultat1.getString("CODE_EXP"); String exp = resultat1.getString("EXPEDITEUR"); String ref = resultat1.getString("REFERENCE"); int typ = resultat1.getInt("TYP"); int statut = resultat1.getInt("STATUT"); String dest = resultat1.getString("DESTINATAIRE");*/ String nom = resultat2.getString("NOM"); //int ag = resultat2.getInt("AG"); System.out.println(/*date + "|" + heure + "|" + code_exp + "|" + exp + "|" + ref + "|" + typ + "|" + statut + "|" + dest + "|" + */nom /*+ "|" + ag*/); } resultat2.close(); } catch(Exception e) { while (e != null) { System.out.println("Message: " + e.getMessage()); System.out.println("SQLState: " + ((SQLException) e).getSQLState()); System.out.println("ErrorCode: " + ((SQLException) e).getErrorCode()); e = ((SQLException) e).getNextException(); } }
PS : certains commentaires sont des brouillons et des tests pour trouver certaines erreurs, si vous voulez quelque chose de plus clair, je peux supprimer ce qui est inutile pour la compréhension de ce problème
Partager