有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从JTable和数据库中删除行

我想从Jtable和数据库中删除选定的行数据

我的代码:

 try {

        DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
        model.removeRow(jTable1.getSelectedRow());

        Class.forName("org.sqlite.JDBC");
        Connection con = DriverManager.getConnection("jdbc:sqlite:C:\\management.db");
        Statement st = con.createStatement();
        int id = jTable1.getSelectedRow();
        Object number =  jTable1.getValueAt(id-1,0);
        String sql = "delete  from emp_details where id ="+number;
        int res = st.executeUpdate(sql);
        if(res == 1) {
                JOptionPane.showMessageDialog(this, "Deleted", "Emp Details", WIDTH);
        }

    } catch (ClassNotFoundException ex) {
        Logger.getLogger(Empsearch.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(Empsearch.class.getName()).log(Level.SEVERE, null, ex);
    }

当我运行程序时,会出现以下异常:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -2

共 (1) 个答案

  1. # 1 楼答案

    调用removeRow()时,所有行选择都将撤消,因此对getSelectedRow()的后续调用将返回-1,从而将id设置为-1。这导致getValueAt将id-1(即-2)作为其第一个参数,这当然是一个无效的行索引,因此出现了异常
    也许可以尝试执行SQL更新,然后删除表行