Comment mettre à jour(actualisation) JTable avec des données provenant d'une base de données

Je suis en train de mettre à jour un JTable après je ajouter ou supprimer un enregistrement de la base de données (MS Access), mais il ne semble pas fonctionner. Aussi, je ne comprends pas pourquoi mes noms de colonnes ne s'affichent pas. Voici mon code:

package Administrator13_03_13;
public class Arsti2 {
JFrame main = new JFrame("Ārst");
JPanel tP = new JPanel();
JPanel bP = new JPanel();
JButton one = new JButton("Test");
JTable table = new JTable();
DefaultTableModel model;
Vector columnNames = new Vector();
Vector data = new Vector();
Arsti2() {
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
main.setSize(840,300);
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String Base = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=SL.mdb";
Connection con = DriverManager.getConnection(Base,"","");
Statement st = con.createStatement();
ResultSet res = st.executeQuery("SELECT * FROM Arsti");
ResultSetMetaData rsmd = res.getMetaData();
int column = rsmd.getColumnCount();         
columnNames.addElement("ID");
columnNames.addElement("Vards");
columnNames.addElement("Uzvards");
columnNames.addElement("Dzimums");
columnNames.addElement("Personas kods");
columnNames.addElement("Telefona numurs");
columnNames.addElement("Nodalas ID");
columnNames.addElement("Amata ID");
while(res.next()) {
Vector row = new Vector(column);
for(int i=1; i<=column; i++) {
row.addElement(res.getObject(i));
}
data.addElement(row);
}
model = new DefaultTableModel(data,columnNames);
table.setModel(model);
//model.fireTableDataChanged();
tP.add(table);
bP.add(one);
main.add(tP,BorderLayout.NORTH);
main.add(bP,BorderLayout.SOUTH);
} catch(Exception e) {
e.printStackTrace();
}
main.setVisible(true);
one.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evnt1) {
model.fireTableDataChanged();
}
});
}
public static void main(String[] args) {
new Arsti2();
}
}
Pour mieux aider plus tôt, après une SSCCE.
vous débarrasser de la columnNames/champs de données et de parler à la modèle seulement: DefaultTableModel a api pour ajouter des lignes/supprimer toutes les lignes, il suffit de lire sa doc api 🙂

OriginalL'auteur usr999 | 2013-03-17