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;
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;
}
Erreur

Auriez vous une idée de l'erreur ?
D'avance merci .