我的代码是:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel model=(DefaultTableModel)pl.getModel();
String urlBaseDonnes="jdbc:mysql://localhost:3306/test";
Connection con;
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException ex){
System.out.println(ex);
}
try{
con =DriverManager.getConnection(urlBaseDonnes,"root","");
try (Statement stmt = con.createStatement()) {
ResultSet rs = stmt.executeQuery("SELECT * FROM news");
ResultSetMetaData rsMetaData = rs.getMetaData();
int numberOfColumns = rsMetaData.getColumnCount();
System.out.println("resultSet MetaData column Count=" + numberOfColumns);
int j=0;
pl.setModel(new javax.swing.table.DefaultTableModel(new Object [][] {},new String [] {"ddd","fgg","nl"}));
// get the name of the column, and changing it
for (int i = 1 ; i <= numberOfColumns; i++) {
ChangeName(pl,j,rsMetaData.getColumnName(i));
System.out.println(rsMetaData.getColumnName(i));
System.out.println(j);
j= j+1;
}
String query="SELECT * FROM news";
rs=stmt.executeQuery(query);
//Show the database
while(rs.next()){
String id=rs.getString("id");
String titre=rs.getString("titre");
String contenu=rs.getString("contenu");
model.addRow(new Object[]{id,titre,contenu});
}
rs.close();
}
con.close();
System.out.println("close the database");
}catch(SQLException ex){
System.out.println(ex);
}
}
我的目标是改变列的名称动态当我改变我的表的名称,这段代码可以改变列的名称,但当它来显示数据库的内容它不工作,我也不能添加列,例如,如果我选择一个表有4列,我会有一个错误。我试图使用DefaultTableModel添加列,但它不起作用。你能帮我动态添加列的部分吗?告诉我为什么这段代码不能显示数据库上的内容?由于
表示数据库中的数据不显示。此代码仅更改列的名称。
首先访问表的TableModel:
DefaultTableModel model=(DefaultTableModel)pl.getModel();
然后修改表的TableModel:
pl.setModel(new javax.swing.table.DefaultTableModel(new Object [][] {},new String [] {"ddd","fgg","nl"}));
然后将数据库中的数据添加到"旧"模型中:
model.addRow(new Object[]{id,titre,contenu});
所以数据不被添加到当前模型。
如果你想创建一个新模型,那么你的代码应该是这样的:
DefaultTableModel model = DefaultTableModel(Object[] columnNames, int rowCount);
pl.setModel( model );
然后代码将把数据库数据添加到实际模型中。
问题是为什么要硬编码列名?当您从数据库中执行select *
时,您不知道将返回多少列数据。您应该使用更通用的代码。参见Table from Database中的TableFromDatabaseExample.java
代码