Les Data ne s'affichent pas dans mon JTable
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:
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:
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:
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 .