2014-12-23 3 views
0

Запрос DELETE не работает должным образом, строка удалена из JTable, но она по-прежнему доступна в базе данных, а когда я обновляю JTable, она снова возвращается в нее.Удалить запрос не работает должным образом

DefaultTableModel m=(DefaultTableModel)tbl.getModel(); 
    if (tbl.getSelectedRow()==-1){ 
     if(tbl.getRowCount()==0) 
      JOptionPane.showMessageDialog(null, "Table is Empty"); 
     else 
      JOptionPane.showMessageDialog(null,"You Must Select a Row"); 
     } 
    else{ 
     int rowIndex = tbl.getSelectedRow(); 

     int n = JOptionPane.showConfirmDialog(null,"Are you sure you want to permanently delete " 
       + MainFrame.pArray.get(rowIndex).name+" information ?","Delete Record",JOptionPane.YES_NO_OPTION); 
    if(n == JOptionPane.YES_OPTION){ 

    String id = MainFrame.pArray.get(rowIndex).id; 

     String sql = "delete from patient where id =?"; 
    try { 
     connect(); 
     if(conn != null){ 
     PreparedStatement sttmnt = (PreparedStatement) conn.prepareStatement(sql); 
     sttmnt.setInt(1,Integer.parseInt(id)); 
     sttmnt.executeUpdate(); 
     m.removeRow(tbl.getSelectedRow()); 
     MainFrame.pArray.remove(rowIndex); 
     JOptionPane.showMessageDialog(null, "Done"); 
     conn.close(); 
     } 
    }  catch (ClassNotFoundException ex) { 
       Logger.getLogger(Table.class.getName()).log(Level.SEVERE, null, ex); 
      } catch (SQLException ex) { 
       Logger.getLogger(Table.class.getName()).log(Level.SEVERE, null, ex); 
      } 
    } 
    } 

ответ

1

Попробуйте совершить транзакцию перед закрытием соединения. Сделайте это вместо того, чтобы:

conn.commit() перед тем conn.close()

+0

ой спасибо свою работу –