Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除记录后冻结的程序(GUI)_Java_Sql_User Interface - Fatal编程技术网

Java 删除记录后冻结的程序(GUI)

Java 删除记录后冻结的程序(GUI),java,sql,user-interface,Java,Sql,User Interface,此代码: private void btnDeleteRecordActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try { rs.deleteRow(); stmt.close(); rs.close();

此代码:

  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下一步和前一个按钮将工作

我先用了这个:

与其在您正在执行工作的方法中定义语句和结果集,不如更好地使用作用域,更安全,尤其是在处理多线程代码时

第二:

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

第三:


执行update/delete时,创建update/delete语句,并将条目(您正试图修改的)id(或某些其他类型的唯一引用)用于该语句。

看起来您的线程正因NullPointerException而死亡。您应该做的第一件事是找出导致NullPointerException的bug所在并修复它

为了更快地获得更好的帮助,请发布一个。考虑硬编码数据的DB。@artiny:避免在edt中进行大型计算:请参阅这是我的错误:Employees.Workers.BTNDeletecRecordActionPerformed(Workers.java:801)处的线程“AWT-EventQueue-0”java.lang.NullPointerException在Employees.Workers处出现异常。Employees.Workers处的access$600(Workers.java:28)处的Workers$7.actionPerformed(Workers.java:268)Workers.java:80 stmt=con.createStatement(ResultSet.TYPE\u SCROLL\u敏感,ResultSet.CONCUR\u可更新);Workers.java:28公共类Workers扩展了javax.swing.JFrame{Workers.java:268 btndeletecrecordactionperformed(evt);来自“createStatement”看起来你的连接是空的。另外,谁能想出这样的代码应该被枪毙(你不应该像那样使用范围)。如果这不是家庭作业,你可以自由使用框架,我建议你使用一个,他们让这类事情变得非常简单。看看像Hibernate、MyBatis这样的框架。。。