未报告的异常SQLException;必须被捕获或声明被抛出错误

时间:2013-02-28 20:09:19

标签: java jtable sqlexception defaulttablemodel

这允许我从我的数据库中获取数据,将其存储为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时它不想玩球?

编辑: 错误: enter image description here

1 个答案:

答案 0 :(得分:0)

我似乎通过以下方式解决了这个问题:

在我的GUI中,我的字段如下:

Account acc = new Account();
DefaultTableModel dTableModel;

构造函数现在显示为:

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

我的GUI中的My 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还没有显示数据......我不确定为什么,但我想这个问题已经解决了,我就进入了下一个问题。感谢所有帮助。