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

hahafan 2006-07-31 05:42:45
使用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就可以了,不知道我哪写的有问题?劳驾各位达人指点迷津。
...全文
299 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
J2MELOVER 2006-11-28
  • 打赏
  • 举报
回复
是呀,我也遇到过此种问题,谢谢
hahafan 2006-08-04
  • 打赏
  • 举报
回复
确实TYPE_SCROLL_SENSITIVE不行,换成TYPE_FORWARD_ONLY就可以了
hahafan 2006-08-01
  • 打赏
  • 举报
回复
我执行的是select,不是INSERT、UPDATE 或 DELETE这样的句子。在java API的ResultSet的帮助里面有我那样的用法。
ranranhu 2006-08-01
  • 打赏
  • 举报
回复
恩,楼上解释的很详细
mx1029 2006-08-01
  • 打赏
  • 举报
回复
要执行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 对象
hahafan 2006-08-01
  • 打赏
  • 举报
回复
咋没人帮忙啊?急
hahafan 2006-08-01
  • 打赏
  • 举报
回复
登陆用户肯定没有问题,还有什么其他原因?
Ji秋风 2006-08-01
  • 打赏
  • 举报
回复
conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
TYPE_SCROLL_INSENSITIVE,不支持ResultSet直接更新的。
happy_day18 2006-08-01
  • 打赏
  • 举报
回复
关注中,我记得数据库里没设置时,连接是不限制的!
hahafan 2006-08-01
  • 打赏
  • 举报
回复
楼上的兄弟,你可以看看java的api帮助,我这样写都是有据可循的,而且我以前用的微软的jdbc驱动的时候没有这个问题,问题是在换了jtds驱动之后出现的。
happy_day18 2006-08-01
  • 打赏
  • 举报
回复
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()才可以写入,返回的是操作完成所影响的记录条数。

haisenmai 2006-07-31
  • 打赏
  • 举报
回复
是不是你的数据库登陆账号没有修改权限哦

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧