colruyt
Messages postés20Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention18 novembre 2004
-
30 avril 2003 à 00:11
cs_Duss
Messages postés890Date d'inscriptionlundi 8 avril 2002StatutMembreDernière intervention29 juillet 2004
-
30 avril 2003 à 17:27
Bonjour a tous ,
J'ai une classe qui fonctionne bien exécutée seule par contre quand je l'appelle depuis une autre , cela ne fonctionne pas !
Si quelqu'un avait une idée
class ResultSetTableModel extends AbstractTableModel {
public String[] columnNames;
public int columnCount;
public Class[] columnClasses;
public List rowValues;
public ResultSetTableModel(ResultSet rs) throws SQLException {
ResultSetMetaData rsmd = rs.getMetaData();
columnCount = rsmd.getColumnCount();
columnNames = new String[columnCount];
columnClasses = new Class[columnCount];
for (int i = 1; i <= columnCount; i++) {
columnNames[i-1] = rsmd.getColumnName(i);
try {
columnClasses[i-1] = Class.forName(rsmd.getColumnClassName(i));
}
catch (ClassNotFoundException clnfe) {
clnfe.printStackTrace();
System.exit(0);
}
}
rowValues = new ArrayList();
while (rs.next()) {
Object[] values = new Object[columnCount];
for (int i = 1; i <= columnCount; i++)
values[i-1] = rs.getObject(i);
rowValues.add(values);
}
}
public int getColumnCount() {
return columnCount;
}
public int getRowCount() {
return rowValues.size();
}
public String getColumnName(int col) {
return columnNames[col];
}
public Class getColumnClass(int col) {
return columnClasses[col];
}
public Object getValueAt(int row, int col) {
return ((Object[]) (rowValues.get(row)))[col];
}
}
class TableViewer extends JPanel{
public TableViewer(final Statement stmt) {
final JTable table = new JTable();
final String requete = "select * from Clients";
try {
stmt.executeQuery(requete);
ResultSet rs = stmt.getResultSet();
table.setModel(new ResultSetTableModel(rs));
}
catch (SQLException sqle) {
JOptionPane.showMessageDialog(null, sqle.getMessage(),
"Problème connexion DB", JOptionPane.ERROR_MESSAGE);
}
this.setLayout(new BorderLayout());
this.add(new JScrollPane(table),"Center");
}
}
public class TableJDBC extends javax.swing.JFrame {
public static void main(String[] args) throws Exception {
Connection con=null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:db","","");
Statement stmt = con.createStatement();
JFrame frame = new JFrame("Affichage de tous les clients");
frame.getContentPane().add(new TableViewer(stmt));
frame.setSize(10,2);
frame.pack();
frame.setVisible(true);
}
}
ET VOICI LA CLASSE APPELANTE
private void button3ActionPerformed(java.awt.event.ActionEvent evt)
{
new TableJDBC().show();
}
Si vous avez le temps 5 minutes , cela me permettrait d'en gagner plus. :)
cs_Duss
Messages postés890Date d'inscriptionlundi 8 avril 2002StatutMembreDernière intervention29 juillet 200411 30 avril 2003 à 09:50
salut,
euh la c est normal en fait paske ta classe elle a juste une fonction main qui lui permet de lancer ton application !!
Si tu veux pouvoir l appeler fait un constructeur.
Il faudra aussi que tu ai une autre classe qui contienne un main !!!
exemple :
public class TableJDBC extends javax.swing.JFrame {
public static void main(String[] args) throws Exception {
TableJDBC t = new TableJDBC();
}
public TableJDBC()
{
Connection con=null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:db","","");
Statement stmt = con.createStatement();
JFrame frame = new JFrame("Affichage de tous les clients");
frame.getContentPane().add(new TableViewer(stmt));
frame.setSize(10,2);
frame.pack();
frame.setVisible(true);
}
}
et apres
private void button3ActionPerformed(java.awt.event.ActionEvent evt)
{
TableJDBC t = new TableJDBC();
}