我想从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
答案 0 :(得分:0)
当调用removeRow()时,任何行选择都会被撤消,因此对getSelectedRow()的后续调用将返回-1,从而将id设置为-1。这导致getValueAt将id-1(即-2)作为其第一个参数,当然这是一个无效的行索引,因此例外。
也许尝试执行SQL更新,然后删除表格行?