我有一个两个数据库表,在我的程序中单击一个按钮,我想删除所有两个表的数据。但桌子上总有一个数据......这是我的代码:
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();}
答案 0 :(得分:2)
当只剩下一个元素时,对first()
的调用将光标设置为该元素,但是while条件中的next()
调用将返回false,导致从循环退出因此deleteRow
不会被执行。
使用rs.beforeFirst()
`。
请注意,您的代码存在很多问题,因此请将此答案作为"用于教育目的"仅
答案 1 :(得分:2)
为什么要迭代select
个记录集?这是非常低效的。
如果要删除这些表中的所有数据,只需执行以下语句:
delete from userLogin;
delete from userViewed;
(或使用truncate
)。