【发布时间】:2014-05-03 16:00:40
【问题描述】:
您能否使用相同的resultSet 填充多个jTable?
public void tableDisplay() {
String tableQuery = "SELECT foodQuantity,foodName FROM food ORDER BY RAND() LIMIT 3";
ResultSet rs;
PreparedStatement statement;
try {
statement = con.prepareStatement(tableQuery);
rs = statement.executeQuery();
jTable1.setModel(DbUtils.resultSetToTableModel(rs));
jTable2.setModel(DbUtils.resultSetToTableModel(rs));
} catch (SQLException ex) {
System.out.println(ex.toString());
}
}
代码编译,但第二个表没有从数据库中获取任何记录。
关键是我需要从 mySql 表中选择随机项,我想在几个jTables 中显示它们。
【问题讨论】:
-
让我们看看 DbUtils.resultSetToTableModel - 如果每次调用它时都在 RS 上进行迭代,那么你就输了(除非你每次都强制它回到 ResultSet 的开头)
-
TableModel model = DbUtils.resultSetToTableModel(rs); ;jTable1.setModel(model); jTable2.setModel(model); -
或者,只需将一行更改为:
jTable2.setModel(jTable1.getModel()); -
设置 TableModel 并将其作为参数传递给每个 jTable2.setModel(model) 方法调用的解决方案有效,并且它使用数据填充每个 jTable。非常感谢你。但是我的结果集总是相同的,而不是产生随机值。这是我的 sql 语句“SELECT foodQuantity,foodName FROM food ORDER BY RAND() LIMIT 3”;我正在尝试使用“ORDER BY RAND() 函数,但似乎一旦生成结果集它就会被保存并重新使用任何想法?
-
如果您希望表中有不同的内容,那么您需要执行两次查询并分别填充每个模型。 jTable1.setModel(DbUtils.resultSetToTableModel(statement.executeQuery())); jTable2.setModel(DbUtils.resultSetToTableModel(statement.executeQuery()));
标签: java mysql swing resultset apache-commons-dbutils