我正在尝试从数据库中将所有数据集选择到jTable中(单击按钮后)。
我尝试过这样的事情:
public Object getValueAt(int rowIndex, int columnIndex) throws SQLException {
java.sql.Connection con;
con = DriverManager.getConnection ("jdbc:mysql://localhost:3306/lessonstbl","root","");
String query =" SELECT * FROM lessons";
PreparedStatement statement = con.prepareStatement(query);
ResultSet rs = statement.executeQuery(query);
try {
rs.absolute(rowIndex + 1);
switch (columnIndex) {
case 0:
return rs.getString(1);
case 1:
return rs.getString(2);
case 2:
return rs.getInt(3);
case 3:
return rs.getObject(4).toString();
case 4:
return rs.getObject(5).toString();
default:
return null;
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
.. 但这不起作用。 提前谢谢
答案 0 :(得分:0)
public Object getValueAt(int rowIndex, int columnIndex) throws SQLException {
在我看来,您似乎正在尝试重写TableModel的getValueAt(...)
方法。由于以下几个原因,该方法不起作用:
您正在通过添加throws SQLExeption来更改方法签名,因此您不会覆盖TableModel的默认实现,而是创建一个未调用的新方法。
在getVaueAt()方法中执行SQL查询是一个坏主意。此方法应非常有效,因为每次需要绘制表中的单元格时都会调用此方法。
因此,正确的解决方案是在创建表时执行SQL查询,并在类开始时将来自SQL查询的所有数据加载到TableModel中。这意味着您将需要遍历ResultSet
的所有行和列,以将数据添加到TableModel
。
检出在Table From Database中找到的Table From DataBase Example
。或者,您可以在论坛中搜索关键字为“ ResultSet and JTable”的其他示例。