1

在这里和那里做了一些研究,我在解决一个特定问题时感到丢脸。我不太熟悉,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());

}

我的错误在于tableEvent.setModel(model.getTableData());VIEW 类的部分,它说必须捕获或抛出 SQL 异常。据我了解,在接口(视图类)中处理数据库不是一个好习惯。应由 MODEL 处理。

我在这里有两个选择:

  1. 将 throws 子句添加到EventView()构造函数本身
  2. 用 包围声明try-catch

但我相信这会将数据库导入和概念添加到接口中,我认为这不是一个好主意吗?大家怎么看,有关系吗?或者我可以用其他方式初始化我的表吗?

4

1 回答 1

0

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

于 2013-01-19T12:01:33.830 回答