Bonjour à Tous
J'ai poser ma question sur le forum Python (je vais la retirer) .
En creusant un peu mon problème, je me suis apperçu
que cela ne venais pas de jython mais de JDBC c'est pour cela que j'ai décidé de vous demander un coup de main.
voilà mon problème
j'ai 2 tables TAB1, et TAB2.
je lance une première requête sur TAB1, et avec la ligne de résultat retournée j'en lance une autre sur TAB2
voilà un extarit de mon code
je définis ma fonction comme ceci:
les 2 fonctions fonctionneent séparémment , pas de problème.
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 def rqt2(tab1, tab2): sql2 = 'SELECT S1 , S2,S3 ,S4 ,S5 FROM TAB2 where S1 = %i and S3 = %i ' %(tab1,tab2) rs2 = stmt.executeQuery(sql2) while (rs2.next()): row2={} row2['AG']=rs2.getInt(1) row2['Ra']=rs2.getString(2) row2['Co']=rs2.getString(3) row2['Dte']=rs2.getString(4) row2['Num_R']=rs2.getString(5) EX.append(row2) rs2.close() Puis ma fonction principal comme ça # load DB2 JDBC type 2 driver (app driver) Class.forName("com.ibm.as400.access.AS400JDBCDriver").newInstance() con = DriverManager.getConnection( 'jdbc:as400://10.33.XX.XX','login','pass') stmt = con.createStatement() sql1='select * from TAB1' rs = stmt.executeQuery(sql1) employeeList=[] while (rs.next()): row={} row['AGI']=rs.getInt(1) row['DEF']=rs.getInt(2) row['WXS']=rs.getString(3) employeeList.append(row) rqt2(row['S1'],row['S3']) rs.close()
Mais en les combinant , la fonction rqt2 ne tourne qu'une fois,
et j'ai des erreurs JDBC dont je vous livre
le contenu.
Traceback (most recent call last):
File "selectT.py", line 76, in <module>
while (rs.next()):
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:385)
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:362)
at com.ibm.as400.access.AS400JDBCResultSet.checkOpen(AS400JDBCResultSet.
java:371)
at com.ibm.as400.access.AS400JDBCResultSet.beforePositioning(AS400JDBCRe
sultSet.java:1243)
at com.ibm.as400.access.AS400JDBCResultSet.next(AS400JDBCResultSet.java:
1776)
at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
java.sql.SQLException: java.sql.SQLException: Cursor
à mon avis le soucis se trouve ici while (rs2.next()) et ici rs2.close()
ou alors , dois je lever une exeption avec rs2.last().
là je dois dire que je sèche un peu....
dois je utiliser la méthode getMoreResults()?
Pourriez vous donner un coup de main à un pauvre novice s'il vous plait?![]()
Partager