1

あちこちでいくつかの調査を行った後、私は特定の問題を解決することに恥をかかせました。私はあまり精通しておらずJTable、いくつかの提案を得ることができるかどうか疑問に思っていました。

Model-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());

}

私のエラーはtableEvent.setModel(model.getTableData());、SQL例外をキャッチまたはスローする必要があるというVIEWクラスのセクションにあります。私が理解していることから、Interface(VIEW CLASS)でデータベースを処理することは良い習慣ではありません。MODELで処理する必要があります。

ここには2つのオプションがあります。

  1. EventView()コンストラクター自体にthrows句を追加します
  2. ステートメントをで囲みtry-catchます。

しかし、それによってデータベースのインポートと概念がインターフェイスに追加されると思いますが、これは良いことではないと思いますか?あなたたちはどう思いますか、それは重要ですか?あるいは、テーブルを他の方法で初期化できますか?

4

1 に答える 1

0

getTableData 関数のシグネチャから throws SQLException 句を削除する必要があります。SQLException はそのメソッド内で処理されるため、スローする必要はなく、ビューはそれについて知る必要はありません。

于 2013-01-19T12:01:33.830 に答える