1

これにより、データベースからデータを取得し、それをDefaultTableModelとして保存し、そのモデルをGUIに渡すことができます。jTableにデータベースデータを入力します。

これは私のAccountクラス内のメソッドです:

public static DefaultTableModel buildTableModel() throws SQLException {
    Vector<Vector<Object>> data = new Vector<Vector<Object>>();
    Vector columns = new Vector();
    PreparedStatement ps = null;
    ResultSet rs = null;
    try {
        String stmt = "SELECT * FROM APP.DATAVAULT";
        ps = Main.getPreparedStatement(stmt);
        rs = ps.executeQuery();
        ResultSetMetaData metaData = rs.getMetaData();

        // names of columns
        Vector<String> columnNames = new Vector<String>();
        int columnCount = metaData.getColumnCount();
        for (int column = 1; column <= columnCount; column++) {
            columnNames.add(metaData.getColumnName(column));
        }
        // data of the table
        while (rs.next()) {
            Vector<Object> vector = new Vector<Object>();
            for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
                vector.add(rs.getObject(columnIndex));
            }
            data.add(vector);
        }

    } finally {
        try {
            ps.close();
        } catch (Exception e) {
        }
        try {
            rs.close();
        } catch (Exception e) {
        }
    }

    DefaultTableModel tableModel = new DefaultTableModel(data, columns);
    return tableModel;
}

次に、GUI内にフィールドとして次のコードがあります

Account acc = new Account();
DefaultTableModel dTableModel = acc.buildTableModel();

最後に、GUIコンストラクター内で、datavaultjTableのモデルをデータベースから取得したモデルに設定しています。

public SPPMainGUI() {
    initComponents();
    datavaultjTable.setModel(dTableModel);
}

私はラインの周りにtry-catchブロックを配置しようとしました

DefaultTableModel dTableModel = acc.buildTableModel();

しかし、エラーはまだ存在します。ここでの私のオプションは何ですか?呼び出されているメソッドがSQLExceptionをスローすることは理解していますが、SQLExceptionをキャッチしたときに、ボールを再生したくないのはなぜですか?

編集:エラー: ここに画像の説明を入力してください

4

1 に答える 1

0

私は次のことを行うことでそれを解決したようです:

私のGUI内で、私のフィールドは次のとおりです。

Account acc = new Account();
DefaultTableModel dTableModel;

コンストラクターは次のように表示されます。

public SPPMainGUI() throws SQLException {
    this.dTableModel = Account.buildTableModel();
    initComponents();
    datavaultjTable.setModel(dTableModel);
}

GUI 内の Main メソッドは次のようになります。

public static void main(String args[]) {
/* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            try {
                new SPPMainGUI().setVisible(true);
            } catch (SQLException ex) {
                Logger.getLogger(SPPMainGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    });
}

これが正しいかどうかはわかりませんが、エラーはもうありません。私のjTableはデータを表示しません...まだです。理由はわかりませんが、これで問題は解決したので、次の問題に取り掛かります。助けてくれたすべてに感謝します。

于 2013-02-28T21:02:21.850 に答える