到处做了一些研究后,我在解决某个特定问题时感到羞愧。我对 JTable
不太熟悉,想知道是否可以获得一些建议。
我正在使用模型- View - Controller 概念,但遇到以下问题。
这是 MODEL 类中的一段没有错误的代码:
public TableModel getTableData() throws SQLException {
try {
String sql = "SELECT date as 'Date',eventName as 'Name', time as 'Start Time' FROM Event";
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
TableModel model = (DbUtils.resultSetToTableModel(rs));
return model;
}
finally {
try {rs.close(); pst.close(); conn.close(); }
catch(SQLException e){}
}
}
这是 VIEW 类的片段:
public EventView() {
initComponents();
this.model = new EventModel();
tableEvent.setModel(model.getTableData());
}
我的错误在于 VIEW 类的 tableEvent.setModel(model.getTableData());
部分,其中表示必须捕获或抛出 SQL 异常。据我了解,在接口(interface)(VIEW CLASS)中处理数据库并不是一个好的做法。应由 MODEL 处理。
我这里有两个选择:
- 将 throws 子句添加到
EventView()
构造函数本身 - 用
try-catch
包围语句。
但我相信这会将数据库导入和概念添加到界面中,我认为这不是一件好事?大家觉得怎么样,重要吗?或者我可以用其他方式初始化我的表吗?
最佳答案
您应该从 getTableData 函数的签名中删除 throws SQLException 子句。 SQLException 是在该方法内部处理的,因此不需要抛出它, View 也不需要知道它。
关于java - JTable 作为 MVC 框架的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14414006/