我有以下两种方法:
public void Delete(){
try{
PreparedStatement stmt = activeConn.prepareStatement("DELETE FROM lid WHERE lid_id = ?");
int selectedID = (int) table.getModel().getValueAt(table.getSelectedRow(), 0);
stmt.setInt(1, selectedID);
stmt.executeUpdate();
stmt.close();
}
catch(SQLException e){
System.out.println(e);
}
}和
public int getID(){
int id = (int) table.getModel().getValueAt(table.getSelectedRow(), 0);
return id;
}第一个用于删除mysql表中的某一行。它工作得很完美。第二个函数应该只给出第一列中选定行的值(这是表中的id )。但是它给出了""AWT-EventQueue-0“java.lang.ArrayIndexOutOfBoundsException:-1”错误。
发布于 2016-06-03 08:23:16
我认为,您需要调用:javax.swing.table.AbstractTableModel.fireTableDataChanged()
从数据库中删除行之后。
发布于 2016-06-03 10:53:50
public int getID(){
int Selectedrow = table.getSelectedRow();
int id = 0;
if(Selectedrow == -1){
// No row selected
// Show error message
}
else{
id = (int) table.getModel().getValueAt(Selectedrow, 0);
}
return id;
} 您尚未从抛出exeption的jtable中选择行,因此在使用所选行之前,需要始终检查用户是否选择了行。如果用户没有选择行,您将得到-1,并且jtable没有包含-1的行
https://stackoverflow.com/questions/37603631
复制相似问题