代码之家  ›  专栏  ›  技术社区  ›  dens14345

如何一键删除数据库中的所有行

  •  0
  • dens14345  · 技术社区  · 11 年前

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

     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 回复  |  直到 11 年前
        1
  •  2
  •   guido    11 年前

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

    使用 rs.beforeFirst() `.

    请注意,您的代码有很多问题,因此请将此答案作为“仅用于教育目的”。

        2
  •  2
  •   paxdiablo    11 年前

    为什么要迭代 select 创纪录了吗?这是非常低效的。

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

    delete from userLogin;
    delete from userViewed;
    

    (或使用 truncate ).