关于resultset 的deleteRow方法报无效的游标位置的错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于resultset 的deleteRow方法报无效的游标位置的错误相关的知识,希望对你有一定的参考价值。

代码是这样的:ResultSet rsEnd = dbOpFactory.getQueryResultSet(conn, "select * from product where productid='bao' and cuser='bao'");
while(rsEnd.next())
if(条件1) rsEnd.deleteRow(); 报错为:[Microsoft][ODBC 驱动程序管理器] 无效的游标状态
at sun.jdbc.odbc.JdbcOdbcResultSet.setPos(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.deleteRow(Unknown Source) 删除确实是能删除的,可是就是到了最后一条它还会执行一遍rsEnd.deleteRow();方法,有哪位用过这个方法的吗?请问执行完deleteRow游标是一个什么样的状态,怎么样才能让它顺利的删完rs里的每条符全条件的记录,然后跳出来,就是说它的判断条件是什么,上面这样出错说明rsEnd.next()这个条件是不可行的.急!

参考技术A 把Statement stmt = conn.createStatement();换成Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);试试
参考技术B 加个try �0�2catch试试你的ResultSet不是只读的吧? �0�2换成默认的试试?

在JSP系统中对ResultSet方法的调用总是报错

org.apache.jasper.JasperException: An exception occurred processing JSP page /first.jsp at line 28

25: <%
26: ResultSet rs = goods.showGoods();
27: int i = 0;
28: while(rs.next() && i<10)
29:
30: String strSql1 = "select name from goodsField where ID ='"+rs.getLong("goodsField")+"'";
31: String strSql2 = "select * from users where ID ='"+rs.getLong("issuer")+"'";

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:515)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:426)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

java.lang.NullPointerException
org.apache.jsp.first_jsp._jspService(first_jsp.java:109)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

NullPointerException
空指针使用异常,也就说你用了一个为空的引用变量.
照第一部分来看是你连接数据库时出现了问题,所以返回了一个Null的空引用.也就是你的网络没连上数据库.
goods.ShowGoods()调用的时侯出了问题.你查查.
你也可以看看rs是不是一个Null引用,你在下面加一句:if(rs==Null) System.out.println("rs is Null");就可以了.但不管怎样肯定是goods.ShowGoods()出了问题造成以下的.
参考技术A java.lang.NullPointerException
null调用了方法的异常
要不然goods,要不然rs
两个有一个是空值,搂主好好检查下
参考技术B 选判断一下rs是不是为空。再while();

以上是关于关于resultset 的deleteRow方法报无效的游标位置的错误的主要内容,如果未能解决你的问题,请参考以下文章

在JSP系统中对ResultSet方法的调用总是报错

多线程中,ResultSet为空,报错空指针

关于对ResultSet 中next() 方法的描述及用法是啥啊

ResultSet 获得数据库查询结果是地址,怎么显示里面的数据啊,用rs.next()总是报错啊

jquery easyui里的datagrid删除行方法(deleteRow)怎么用

在 deleteRows 之后 TableView reloadData