站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题使用ResultSet时遇到的问题,实在搞不定,求助一下!

使用ResultSet时遇到的问题,实在搞不定,求助一下!

摘要: 使用ResultSet时遇到的问题,实在搞不定,求助一下!


...

statement = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs = statement.excuteQuery("select * from " + tablename);
while(rs.next())
{
...
rs.deleteRow();//记录已经成功删除
...
}
..

数据库是Sql Server2000,比如表中记录共有10行,我已经成功删除了1行,还剩9行,但是通过调试,发现rs走过第9行后,rs.next()仍然返回true!调试时显示rs.getRow()=10,在运行就出现错误java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3908)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5702)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:356)
at sun.jdbc.odbc.JdbcOdbcResultSet.getObject(JdbcOdbcResultSet.java:1680)
at DeleteRedundance.main(DeleteRedundance.java:60)

郁闷了一下午,实在解决不了。。


在调试时显示第9行的数据确实是表中的最好一条记录,那怎么还往下走??


学生吗???只有学生才用resultset去记录集中操作数据库,建议你直接操纵数据库,看还会不会出问题


删除前,rs要走10行
删除后,rs走9行

如果删除后还是走10行,那就要到数据库去看看了,记录到底还在不在

为什么不直接用DELETE语句删除呢


采取直接操作数据库内容的方法吧

那样做肯定不会错的






QQ群:8888252,软件技术交流,欢迎大家哦


kubbye(小蛤蟆就是我) ( ) 信誉:100 Blog 2006-10-16 06:41:00 得分: 0


学生吗???只有学生才用resultset去记录集中操作数据库,建议你直接操纵数据库,看还会不会出问题


--------------------------------------------------------------

那应该怎么做啊


delete from table名字 where 你的条件


是这样的,因为数据库中有100多个表,而我发现表中有很多重复的记录,而所有的表竟然都没有主键(表都不是我设计的),我现在想用编程的方法来删除重复的记录,所有才用到了resultset,直接操作数据库要对这100个表修改,我觉得太麻烦,我也用过了sql语句:
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
这样可以删除重复的记录,但是问题是很多表里有text类型的字段,distinct不能作用与该类型,所以上述办法不能完全起作用,不知大家还有什么好办法?


若用delete语句,where的条件我不知道应该怎么写。。


建议下次查之前,把rs close一下


数据库commit了没?或者再执行一次ResultSet rs = statement.excuteQuery("select * from " + tablename);再取一次ResultSet试试。
不过最好还是建议直接用DELETE语句删:DELETE mytable WHERE first_column=‘Delete Me’


按照楼上的提议,我每次删除后再执行一次查询,可以没问题了
但是这样效率太低了一个表有1000行重复记录,我就要循环1000次,查询1000次,我运行了下,实太慢了


呵呵,这个挺有意思

学生吗???只有学生才用resultset去记录集中操作数据库,建议你直接操纵数据库,看还会不会出问题

我想问下kubbye(小蛤蟆就是我),为什么就说楼主是学生呢


同楼上,觉得有意思,呵呵


顺便说一下,本人也从来没有用过rs.delete的方法,呵呵
个人感觉,你看看java doc关于这方面的介绍,或许是你的JDBC驱动程序本身就不支持


我都觉得很有意思,他怎么知道我是学生!
我也知道直接写SQL语句操纵数据库比较好,但是我想不出怎么写啊
没想到用ResultSet遇到这么多问题,原来以为很简单的一个程序


你删除记录总有个条件吧,把条件写到SQL里面去执行就是了。


xiangbo520(充栋汗牛) ( ) 信誉:107 Blog 2006-10-18 00:32:00 得分: 0


你删除记录总有个条件吧,把条件写到SQL里面去执行就是了。


在8楼我说过了情况了,就是因为where条件写不出来,才想到用编程的方法的

老板说数据库的内容不用我来管!
我晕。。找说啊!


↑返回目录
前一篇: Struts下如何在JSP中调用数据库查询的结果?
后一篇: 这段javascript是什么意思啊?