我在Java Swing中创建了一个 JTable 。
如何更新它以显示存储在MySQL数据库中的所有值?
我尝试在网上搜索,但仍然没有运气。
这是我的代码......
try{
PreparedStatement ps = con.prepareStatement("SELECT * FROM Users ");
ResultSet result = ps.executeQuery();
while(result.next()){
salesTable.setValueAt(result.getString("users"), 1, 1);
}
}
catch(SQLException sqle){
sqle.printStackTrace();
}
我一直收到java.lang.ArrayIndexOutOfBoundsException: 1 >= 0
错误。
如果有人能告诉我出错的地方以及可能解决这个错误,我将不胜感激。
答案 0 :(得分:4)
此方法调用
result.getString(name)
期望列的名称,而不是表的名称。
可能是你的困惑来自哪里。
您需要遍历所有列 为每个人命名并调用此方法。
此外,ArrayIndexOutOfBoundsException
来自salesTable而不是来自ResultSet。
查看这两项,您应该可以解决此问题。
答案 1 :(得分:2)
salesTable.setValueAt(result.getString("users"), 1, 1);
我猜你有一个空的TableModel。
您不能仅使用setValueAt(...)
方法将数据添加到TableModel
。 setValueAt(...)方法用于更新模型中的现有数据。这意味着行和列必须已存在于TableModel中。
要向TableModel添加新数据,您需要使用DefaultTableModel的addRow(...)
方法。
请参阅Table From Database中的Table From Database Example.java
代码。它将为您提供如何从ResultSet
动态加载TableModel的示例。
答案 2 :(得分:0)
一开始,您要清理并填写jTable,请将其放置:
dtm.setRowCount(0);
dtm
是关于jTable的模型。这样做是在每次填充之前清理模型。