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());
    }

}         

データベースから 1 行を削除した後、プログラムがフリーズします。削除ボタンを押した後、次のボタンと前のボタンが機能するようにしたいです。

私はthieを使用しました:http://www.homeandlearn.co.uk/java/delete_a_record_from_a_database.html

4

2 に答える 2

0

まず:

むしろ、作業を行っているメソッド内で Statement と ResultSet を定義します。これは、特にマルチスレッド コードで作業する場合に、スコープをより適切に使用し、より安全です...

第二に:

「Workers」をクエリするときは、各行を POJO にマップし、すべての POJO をコレクションに配置してから、ResultSet ではなくコレクションでアプリを動作させます。

第三に:

update/delete を実行するときは、update/delete ステートメントを作成し、(変更しようとしている) エントリの ID (または他のタイプの一意の参照) をステートメントに使用します。

于 2013-05-19T08:47:11.030 に答える