Bonjour,
En java(Eclipse) je me connecte à mon AS400 via les driver jtopen_7_3 d'IBM.
Je voudrai renvoyer le résultat de ma requête dans un Jtable en utilisant la classe AbstractTableModel .
Le problème c'est que mon Jtable m'affiche bien les noms des (colonnes)champs mais pas les données .
Voici le code:
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 import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JFrame; public class as400 { /** * @param args * @throws SQLException */ public static void main(String[] args) throws SQLException { // TODO Auto-generated method stub Connection cn; Statement st = null; DriverManager.registerDriver(new com.ibm.as400.access.AS400JDBCDriver()); cn = DriverManager.getConnection("jdbc:as400://144.164.165.10/POUBELLE","INVITE","INVITE"); st = cn.createStatement (); ResultSet rs = st.executeQuery("select societe,client,nom from clisig"); ResultSetTableModel rtm = new ResultSetTableModel( rs ); TablePanel tablePanel = new TablePanel( rtm ); JFrame mainFrame = new JFrame( "Affiche table " ); mainFrame.add( tablePanel, BorderLayout.CENTER ); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); mainFrame.setSize( 640, 480 ); mainFrame.setVisible( true ); //while(rs.next()){ // System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+rs.getString(4)+" "+rs.getString(5)); //} cn.close(); } }
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import javax.swing.table.AbstractTableModel; public class ResultSetTableModel extends AbstractTableModel { /** * */ private static final long serialVersionUID = 1L; public ResultSetTableModel( ResultSet resultSet ) { this.resultSet = resultSet; try { this.resultSetMetaData = resultSet.getMetaData(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public int getColumnCount()//qui renvéra le nombre de colonnes { try { return resultSetMetaData.getColumnCount(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return 0; } } @Override public int getRowCount()//pour le nombre de lignes { try { resultSet.last(); return resultSet.getRow(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return 0; } } @Override public Object getValueAt(int rowIndex, int columnIndex) { try { resultSet.absolute( rowIndex + 1 ); return resultSet.getObject(columnIndex + 1 ); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } @Override public String getColumnName( int column )//pour que le JTable puisse utiliser les noms des champs comme titres de colonnes, { try { return resultSetMetaData.getColumnName( column + 1 ); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return ""; } } private ResultSet resultSet; private ResultSetMetaData resultSetMetaData;Erreur
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 import java.awt.BorderLayout; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.TableModel; public class TablePanel extends JPanel { /** * */ private static final long serialVersionUID = 1L; public TablePanel( TableModel model ) { table = new JTable( model ); setLayout( new BorderLayout() ); add( new JScrollPane( table ), BorderLayout.CENTER ); } private JTable table; }
Auriez vous une idée de l'erreur ?
D'avance merci .








Répondre avec citation
Partager