我正在尝试从我的数据库中将所有数据集选择到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());
.. 但这行不通。 提前感谢一切
public Object getValueAt(int rowIndex, int columnIndex) throws SQLException {
在我看来,您正在尝试覆盖表模型的getValueAt(...)
方法。由于以下几个原因,这行不通:
您正在通过添加引发的 SQLExeption 来更改方法签名,因此您不会重写 TableModel 的默认实现,而是创建一个不被调用的新方法。
在getVaueAt((方法中进行SQL查询是一个坏主意。此方法应该非常有效,因为每次需要绘制表中的单元格时都会调用此方法。
因此,正确的解决方案是在创建表时执行 SQL 查询,并在类开始时将 SQL 查询中的所有数据加载到 TableModel 中。这意味着您需要遍历ResultSet
的所有行和列才能将数据添加到TableModel
。
查看在数据库中的表中找到的Table From DataBase Example
。或者,您可以在论坛中搜索关键字为"ResultSet and JTable"的其他示例。