簡體   English   中英

如何一鍵刪除數據庫中的所有行

[英]How to delete all rows in database on one click

我有兩個數據庫表,在程序中單擊一個按鈕,我想刪除所有兩個表的數據。 但是桌上總是剩下一個基准。這是我的代碼:

 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();}

當僅剩一個元素時,您對first()的調用會將光標設置為該元素,但是隨后在while條件中的next()調用將返回false,導致退出循環,因此deleteRow將不會執行。

使用rs.beforeFirst() `。

請注意,您的代碼存在很多問題,因此僅以“出於教育目的”獲得此答案。

為什么要遍歷所有select記錄集? 效率極低。

如果要刪除這些表中的所有數據,只需執行以下語句即可:

delete from userLogin;
delete from userViewed;

(或使用truncate )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM