2014-09-18 18 views
-1

我正在使用ms訪問作爲數據庫來管理圖書館管理系統。我的「刪除」按鈕可以刪除沒有問題的記錄,但是我擔心的是,即使提供的條目沒有存儲在數據庫中,它也會打印/顯示JOptionPane messageDialog(「記錄已成功刪除」),更糟糕的是,甚至當所有的JTextFields都是空的。刪除按鈕被命名爲b11。請幫忙嗎?即使提供的數據不在數據庫中,我的刪除按鈕仍然顯示消息框「記錄已成功刪除」(ms訪問)

下面是代碼,如果(ee.getSource()== B11){

  int f = JOptionPane.showConfirmDialog(null,"Are you sure you really want to delete?","Delete",JOptionPane.YES_NO_OPTION); 
      if(f==0){ 
      try 
      { 
      ps=con.prepareStatement("Delete from Book where BookID=?"); 
      ps.setString(1,tt11.getText()); 
      int i; 
      i=ps.executeUpdate(); 
      clearBk(); 
      JOptionPane.showMessageDialog(null,"Record deleted successfully","Information",JOptionPane.INFORMATION_MESSAGE); 
      } 
      catch(Exception e) 
      { 
       JOptionPane.showMessageDialog(null,"Could not delete Record!","Error",JOptionPane.ERROR_MESSAGE); 

      } 
      } 
     } 
+0

即使id不存在,語句也應該無例外地執行。我不是100%確定的,但我相信'int i'你可能會返回1(或更多),如果它刪除的東西,0,如果沒有被刪除。 – Compass 2014-09-18 15:44:57

+1

當沒有行被刪除時,執行更新將返回0 – ControlAltDel 2014-09-18 15:47:07

+0

@ControlAltDel感謝您的驗證。 – Compass 2014-09-18 15:48:06

回答

0

應用條件等

if(i>0){ 
JOptionPane.showMessageDialog(null,"Record deleted successfully","Information" 
               ,JOptionPane.INFORMATION_MESSAGE); 
} 

PreparedStatement#executeUpdate() 總是返回任一(1)的行數SQL數據操作語言(DML)語句或(2)爲0的SQL語句不返回

因此,對話框始終會始終執行語句,即使您gh沒有記錄受到影響

+0

@Compass和ControlAltDel謝謝你們,你們的回答對我來說很有意義。它真的對我有用,再次感謝。 – fmm 2014-10-03 17:59:01

+0

@ControlAltDel,非常感謝! – fmm 2014-10-03 17:59:42

+0

你搖滾先生,非常感謝@SparkOn!只要我讀到你的答案(代碼),所有的理論對我都有意義。納瑪斯特! – fmm 2014-10-03 18:02:14