日期:2014-05-18  浏览次数:20841 次

jdb使用resultset的deleterow()带来的困惑!
代码片断:
stmt=Conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE);
String   sqlsubstr   =   "select   *   from   street   where   AreaID= "   +   1;
Rs=stmt.executeQuery(sqlsubstr);
try{
        while(Rs.next()){
            Rs.deleteRow();
        }
}catch(Exception   e){
    System.out.print(e.toString());
}
为什么不能完全清除AreaID等于1的记录,总是隔一个删除一个.请大家帮一下忙?

别使用sql语句和使用记录集哪一个效率更高呢?

------解决方案--------------------
while(Rs.next()){
Rs.deleteRow();
}
=============
这样工作的:删除当前行,指针移到下一行,再Rs.next()指针移到下下一行,于是错过了一行

sql语句效率高
------解决方案--------------------
当然使用sql语句效率高……

rs.deleteRow()删除当前行,比如说有3条记录,编号1,2,3

rs.next(),指针指向第一行,即记录1
rs.deleteRow(),删除记录1
rs.next(),指针指向第二行,即记录3
…………
…………
最后记录2的记录仍然存在……