如何在一次单击中删除数据库中的所有行

时间:2014-03-09 12:32:54

标签: java mysql resultset

我有一个两个数据库表,在我的程序中单击一个按钮,我想删除所有两个表的数据。但桌子上总有一个数据......这是我的代码:

 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 个答案:

答案 0 :(得分:2)

当只剩下一个元素时,对first()的调用将光标设置为该元素,但是while条件中的next()调用将返回false,导致从循环退出因此deleteRow不会被执行。

使用rs.beforeFirst()`。

请注意,您的代码存在很多问题,因此请将此答案作为"用于教育目的"仅

答案 1 :(得分:2)

为什么要迭代select个记录集?这是非常低效的。

如果要删除这些表中的所有数据,只需执行以下语句:

delete from userLogin;
delete from userViewed;

(或使用truncate)。