我开发了以下代码,
try{
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/online_store","username","password");
if(con != null){
String query = "SELECT * FROM expense";
rs = stmt.executeQuery(query);
ResultSetMetaData rsmt = rs.getMetaData();
int c = rsmt.getColumnCount();
Vector column = new Vector(c);
for(int i = 1; i <= c; i++) { column.add(rsmt.getColumnName(i)); }
Vector data = new Vector(); Vector row = new Vector();
while(rs.next())
{
row = new Vector(c);
for(int i = 1; i <= c; i++)
{
row.add(rs.getString(i));
}
data.add(row);
}
expense_table.add(data);
// expense_table.getColumnName(null);
JOptionPane.showMessageDialog(null, "get details from database");
}
}catch(SQLException ex){
System.out.println(ex);
}
我现有的表的名称是expense_table。我需要在该表中显示数据库中的所有记录,而不更改其结构/不创建新表。除了在表中显示数据(行) vector “expense_table.add(data);”之外,一切正常。线。请告诉我有什么方法可以做到这一点。
最佳答案
I need to display all the records from database in this table without change its structure/without creating new table.
那么您就不需要从结果集中访问列名。您只需向 JTable 添加新的数据行。因此,摆脱创建“列” vector 的逻辑。
//expense_table.add(data);
您无法将 Vector 添加到 JTable。没有任何方法可以让您执行此操作,因此请删除该语句。
相反,您需要一次一行将数据添加到 DefaultTableModel
中:
//data.add(row);
DefaultTableModel model = (DefaultTableModel)expense_table.getModel();
model.addRow( row );
关于java - 将 vector 添加到现有的 jTable 以显示数据库中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32079596/