【问题标题】:Lines after the executeQuery(quer) not executing?executeQuery(quer) 之后的行没有执行?
【发布时间】:2014-07-09 14:07:52
【问题描述】:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
   String del_user = JOptionPane.showInputDialog(null,"Enter the Username To be deleted     :"  ,"Delete User !", JOptionPane.WARNING_MESSAGE);

   try {    
      stmt = con.createStatement(); 
      String quer = "delete from Udet where username='"+del_user+"'";
      rs=stmt.executeQuery(quer);

      int count=0; 
      while(rs.next())
      {
         count++;
     }

     if(count==1)
     {
        JOptionPane.showMessageDialog(null,"The user has been deleted");
     }

     else
     {
        JOptionPane.showMessageDialog(null,"No such User Exists");
     }

  } catch(Exception e){}


}        

查询执行正常!记录被删除,但查询执行后的行没有执行...... JOptionPane 将在 try 块之后工作,但不会确定 count 的值...

【问题讨论】:

    标签: java sql try-catch executequery


    【解决方案1】:

    DELETE 语句不会返回ResultSet,因此您应该使用方法stmt.executeUpdate(quer); 而不是stmt.executeQuery(quer);。 您可以查看从查询中删除了多少结果的一种方法是使用executeQuery() 方法在DELETE 之前和之后对表运行SELECT COUNT(*) 查询,该方法将两次返回ResultSet,其中包含单个结果表包含多少条记录。在DELETE 之前和之后运行它之后,您可以比较这两个数字。 结果可能是String,但您可以使用int integer = Integer.parseInt(String); 从中获取int。代码应如下所示:

    stmt = "SELECT COUNT(*) AS Count FROM table_name";
    int initialSize = 0;
    rs = stmt.executeQuery(stmt);
    while(rs.next){
      initialSize = Integer.parseInt(rs.getString("Count");
    }
    

    运行DELETE 查询,然后重复COUNT 查询,将int 传递给一个新变量(对于这个答案,我将其称为newSize)所以DELETE 所做的更改数量将是:

    int changesMade = initialSize - newSize;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 2019-12-03
      • 1970-01-01
      • 2016-05-02
      • 2020-11-21
      • 1970-01-01
      • 2020-07-02
      相关资源
      最近更新 更多