2017-11-25 90 views
0

我有删除按钮的问题。当我在文本字段中输入任何内容并按下删除按钮时,我没有收到弹出式菜单作为例外。代码没有检测到来自用户的空输入

private void billdeleteActionPerformed(java.awt.event.ActionEvent evt) { 
    // TODO add your handling code here: 
    try{ 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     int id=Integer.parseInt(billidtext.getText()); 
     try (//step2 create the connection object 
      Connection con = DriverManager.getConnection("jdbc:oracle:thin:localhost:xe","hr","****")) { 
      Statement stmt=con.createStatement(); 
      stmt = con.createStatement(); 
      String sql = "DELETE FROM bill " + 
      "WHERE bid = ('"+id+"')"; 
      int w=stmt.executeUpdate(sql); 
      if(w!=0) 
      JOptionPane.showMessageDialog(null,"Deleted Successfully!"); //this is displayed successfully 
      else 
      JOptionPane.showMessageDialog(null,"value does not exists!");// this is displayed successfully 
      supplieridtext.setText(""); 

      //view trigger 
      String sql1="SELECT * FROM bill"; 

      stmt = con.createStatement(); 

      ResultSet rs = stmt.executeQuery(sql1); 
      //STEP 5: Extract data from result set 
      billtable.setModel(DbUtils.resultSetToTableModel(rs)); 
      rs.close(); 

      //step5 close the connection object 
     } 
    }catch(ClassNotFoundException | SQLException e){ 
     JOptionPane.showMessageDialog(null,"no value entered!");} //this line is not displayed when the text field is empty 
} 
+0

它看起来像你应该捕获一个'java.lang.NumberFormatException',以防给'Integer.parseInt'提供一个它不理解的输入。 –

+0

'billidtext.getText()。trim()。isEmpty()' – MadProgrammer

回答

2
if (!billidtext.getText().trim().isEmpty()) { 
    // Do query 
} 

如前所述,你需要捕获java.lang.NumberFormatExceptionint id=Integer.parseInt(billidtext.getText());明确,因为这是一个“未经检查的异常”

if (!billidtext.getText().trim().isEmpty()) { 
    try { 
     int id=Integer.parseInt(billidtext.getText(); 
     // Do query 
    } catch (java.lang.NumberFormatException exp) { 
     JOptionPane.showMessageDialog(null,"Invalid value!"); 
    } 
} else { 
    JOptionPane.showMessageDialog(null,"no value entered!"); 
} 

你也应该利用的PreparedStatements