executeQuery(查询)后没有执行的行?

时间:2014-07-09 14:07:53

标签: java sql try-catch executequery

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){}


}        

QUERY EXECUTES FINE!记录被删除但是查询后的行不能执行... 在try块之后,JOptionPane将起作用,但是不会确定count的值......

1 个答案:

答案 0 :(得分:0)

DELETE语句不会返回ResultSet,因此您应该使用方法stmt.executeUpdate(quer);而不是stmt.executeQuery(quer);。 从查询中删除了多少结果的一种方法是使用SELECT COUNT(*)方法在DELETE之前和之后对表进行executeQuery()查询,这两次都会返回ResultSet 1}}包含一个包含表包含的记录数的结果。在DELETE之前和之后运行它之后,您可以比较2个数字。 结果可能是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;