2014-03-09 1 views
0

У меня есть две таблицы базы данных, при одном нажатии кнопки в моей программе я хочу удалить все данные из двух таблиц. Но всегда есть одна точка привязки осталось на столе .. Вот мой код:Как удалить все строки в базе данных одним щелчком мыши

public void mouseClicked(MouseEvent arg0) { 
        int confirm = JOptionPane.showConfirmDialog(null, "Are you sure you want to delete the log? ", "Log", JOptionPane.YES_NO_OPTION); 
        if (confirm == JOptionPane.YES_OPTION){ 
         try{ 

          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
          con = DriverManager.getConnection("jdbc:odbc:RIM"); 
          Statement st1 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 
          Statement st2 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 
          String sql1 = "select * from userLogIn"; 
          ResultSet rs1 = st1.executeQuery(sql1); 
          String sql2 = "select * from userViewed"; 
          ResultSet rs2 = st2.executeQuery(sql2); 

          while(rs1.next()){   
           rs1.deleteRow(); 
           rs1.first(); 
          } 

          while(rs2.next()){         
           rs2.deleteRow(); 
           rs2.first(); 
          } 

          editorPane.setText(""); 
         }catch(Exception e){e.printStackTrace();} 

ответ

2

Когда есть только один элемент влево, ваш вызов first() устанавливает курсор на этот элемент, а затем next() вызов в то время условие вернет false, вызывая выход из цикла, и поэтому deleteRow не будет выполнен.

Использование rs.beforeFirst() `.

Обратите внимание, что в вашем коде есть много проблем, поэтому получите ответы только как «для образовательных целей».

2

Почему вы выполняете итерирование по select набора записей? Это невероятно неэффективно.

Если вы хотите удалить все данные из этих таблиц, вы можете просто выполнять операторы:

delete from userLogin; 
delete from userViewed; 

(или используйте truncate).