这允许我从我的数据库中获取数据,将其存储为 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 构造函数中,我将我的 datavault jTable 模型设置为我从数据库中获得的模型
public SPPMainGUI() {
initComponents();
datavaultjTable.setModel(dTableModel);
}
我试过在这条线上放一个 try-catch 块
DefaultTableModel dTableModel = acc.buildTableModel();
但是错误仍然存在。我在这里有什么选择?我知道我被调用的方法会引发 SQLException,但是为什么当我捕获 SQLException 时它不想打球?
编辑:错误: