0

这段代码:

  private void btnDeleteRecordActionPerformed(java.awt.event.ActionEvent evt) {                                                
    // TODO add your handling code here:
    try {
        rs.deleteRow();
        stmt.close();
        rs.close();

        stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                ResultSet.CONCUR_UPDATABLE);

        String sql = "SELECT * FROM Workers";
        rs = stmt.executeQuery(sql);

        rs.next();
        int id_col = rs.getInt("ID");
        String id = Integer.toString(id_col);
        String first = rs.getString("First_Name");
        String last = rs.getString("Last_Name");
        String job = rs.getString("Job_Title");

        textID.setText(id);
        textFirstName.setText(first);
        textLastName.setText(last);
        textJobTitle.setText(job);
    } catch (SQLException err) {
        //  System.out.println(err.getMessage());
        JOptionPane.showMessageDialog(Workers.this, err.getMessage());
    }

}         

从数据库中删除一行后,程序冻结。我希望该程序能够在删除按钮 te 下一个和上一个按钮工作后工作。

我用过:http: //www.homeandlearn.co.uk/java/delete_a_record_from_a_database.html

4

2 回答 2

0

看起来您的线程正在死于 NullPointerException。您应该做的第一件事是找出导致 NullPointerException 的错误在哪里并修复它。

于 2013-05-19T09:03:23.820 回答
0

首先:

而是在您正在执行工作的方法中定义您的 Statement 和 ResultSet,这是更好地使用范围并且更安全,尤其是在使用多线程代码时...

第二:

在查询“Workers”时,将每一行映射到一个 POJO 并将所有 POJO 放入一个集合中,然后让您的应用程序使用该集合而不是 ResultSet。

第三:

在进行更新/删除时,创建一个更新/删除语句并使用条目(您尝试修改的)id(或其他类型的唯一引用)到该语句。

于 2013-05-19T08:47:11.030 回答