これにより、データベースからデータを取得し、それを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をキャッチしたときに、ボールを再生したくないのはなぜですか?
編集:エラー: