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

当前页面: 开发资料首页JSP 专题求助,关于ResultSet is read only的异常。

求助,关于ResultSet is read only的异常。

摘要: 求助,关于ResultSet is read only的异常。


使用jtds1.2+tomcat5.5.16+sql server2000,数据库连接使用的datasource没有问题,查询也没有问题,但是使用updateInt时就报ResultSet is read only的异常,代码如下:
Statement stmtbh = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
rsbh = stmtbh.executeQuery("select * from docxlh where xlhid = '" + djbs + "'");
if(rsbh.next()){
rsbh.updateInt("xlhvalue", oldvalue + 1);
rsbh.updateRow();
}else{
rsbh.moveToInsertRow();
rsbh.updateString("xlhid", djbs);
rsbh.updateInt("xlhvalue",1);
rsbh.insertRow();
}

我看资料只要在createStatement时设置ResultSet.CONCUR_UPDATABLE就可以了,不知道我哪写的有问题?劳驾各位达人指点迷津。


是不是你的数据库登陆账号没有修改权限哦


登陆用户肯定没有问题,还有什么其他原因?


咋没人帮忙啊?急


要执行update,delete,insert用executeUpdate 而不是executeQuery
java 1.5API:

executeQuery
ResultSet executeQuery(String sql)
throws SQLException执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。

参数:
sql - 要发送给数据库的 SQL 语句,通常为静态 SQL SELECT 语句
返回:
包含给定查询所生成数据的 ResultSet 对象;永远不能为 null
抛出:
SQLException - 如果发生数据库访问错误或者给定 SQL 语句生成单个 ResultSet 对象之外的任何其他内容

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

executeUpdate
int executeUpdate(String sql)
throws SQLException执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。

参数:
sql - SQL INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句
返回:
INSERT、UPDATE 或 DELETE 语句的行计数;或者 0,表示不返回任何内容的 SQL 语句
抛出:
SQLException - 如果发生数据库访问错误或者给定的 SQL 语句生成 ResultSet 对象


恩,楼上解释的很详细


我执行的是select,不是INSERT、UPDATE 或 DELETE这样的句子。在java API的ResultSet的帮助里面有我那样的用法。


if(rsbh.next()){
rsbh.updateInt("xlhvalue", oldvalue + 1);
rsbh.updateRow();
}else{
rsbh.moveToInsertRow();
rsbh.updateString("xlhid", djbs);
rsbh.updateInt("xlhvalue",1);
rsbh.insertRow();
}
那你这段代码不是在写数据库吗?
如果你用的只是rsbh = stmtbh.executeQuery("select * from docxlh where xlhid = '" + djbs + "'");
这个只能对数据库进行读操作,返回的也是记录集。应该用executeUpdate()才可以写入,返回的是操作完成所影响的记录条数。




楼上的兄弟,你可以看看java的api帮助,我这样写都是有据可循的,而且我以前用的微软的jdbc驱动的时候没有这个问题,问题是在换了jtds驱动之后出现的。


关注中,我记得数据库里没设置时,连接是不限制的!


conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
TYPE_SCROLL_INSENSITIVE,不支持ResultSet直接更新的。


确实TYPE_SCROLL_SENSITIVE不行,换成TYPE_FORWARD_ONLY就可以了


是呀,我也遇到过此种问题,谢谢


↑返回目录
前一篇: 求jspSmartUpload上件组件
后一篇: poi操作Excel的问题,总也有问题,谁能给个例子看看。