JTable作为MVC框架的一部分

时间:2013-01-19 11:48:29

标签: java sql swing user-interface jtable

在这里和那里做了一些研究,我在解决一个特定的问题时感到羞愧。我对JTable不太熟悉,并且想知道我是否可以得到一些建议。

我正在使用模型 - 视图 - 控制器概念,我有以下问题。

以下是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处理。

我有2个选项:

  1. 将throws子句添加到EventView()构造函数本身
  2. try-catch的环绕声明。
  3. 但我相信会将数据库导入和概念添加到接口,我认为这不是一个好的?你们有什么想法,这有关系吗?另外,我可以将其他一些表格初始化吗?

1 个答案:

答案 0 :(得分:0)

您应该从getTableData函数的签名中删除throws SQLException子句。 SQLException在该方法内部处理,因此不需要抛出它,并且视图不需要知道它。