1.ResultSet.TYPE_SCROLL_SENSITIVE 据说可以感应到DB变化,感应到什么,如何感应?2.ResultSet只有updateRow()怎么没有多行更新?3.RowSet可以多行更新,怎么不可以对多表查询进行更新,完全可以对不同表指定不同KEY实现跟新啊?4.RowSet一定要断开连接吗?我觉得保持连接有什么关系,又不是在浏览器端保持连接,服务器端不停的创建连接干嘛?

解决方案 »

  1.   

    难道我非得去看那上千页的jdbc api tutorial? 晕,就为了搞懂这两个简单问题?
      

  2.   

    TYPE_SCROLL_SENSITIVE只能更新操作敏感,其它的插入操作和删除操作不会及时地反映到结果集
      

  3.   

    TYPE_SCROLL_SENSITIVE只能更新操作敏感,怎么个敏感法?
      

  4.   

    如果对当前ResultSet中的记录有DB有update操作,且这些update操作成功提交了事务,当ResultSet对这些记录操作时,会获取DB中最新的数据。
    如果对敏感无概念,就用SENSITIVE,像我们常说大小写敏感(case sensitive),就是说A和a是不同,要区分的;对于4,查看API发现RowSet有这么些子接口CachedRowSet, FilteredRowSet, JdbcRowSet, JoinRowSet, SyncResolver, WebRowSet,且只JdbcRowSet保持着与数据源的连接,其他的都是些 Disconnected RowSet。楼主可以先去了解下一个数据库的连接是怎么创建的,以及一直保持连接会占用什么资源(主要是DB,也许系统的瓶颈受限于DB资源的有限性,像连接数目一定等等),然后为什么需要连接池,缓存等技术,你就不会有上面的疑问了。对于2,不清楚楼主的意图,ResultSet 对象具有指向其当前数据行的光标。最初,光标被置于第一行之前。next 方法将光标移动到下一行;你要更新多行,JDBC完全可以批量更新;而任何增,删,改操作是事务成功提交后,DB才会真正的处理。对于3,RowSet不行,JoinRowSet是否满足你的需求。只翻了下API,说了下理解,没有测试。
      

  5.   

    谢谢你的回复,但还是有些不懂的。
    1.这个SENSITIVE有点恐怖,竟然自动把前面提取的数据给修改,如果我也更改了数据但没有更新,或者我认为我已经了解这个数据,但它却更改我已阅读的数据却不给提示,有点恐怖,这东西有什么用?
    2.JoinRowSet 感觉挺麻烦的,居然要一个一个的add进来,我需要的是一个复杂的sql结果直接拿过来,然后我可以告诉它如何update,而不是它那样,一个一个select出来,然后组装起来,纯粹多余且不方便。
      

  6.   

    1. 你不是说出了它的作用;
    2. JDBC是个API,也就是Java访问数据库的技术规范(具体实现一般由各数据库供应商提供),它可以把你的SQL发送给DB,由DB解析执行并返回结果,JDBC把返回的结果以Java对象的形式给你,如果你要它能自己生成SQL,你可以象一些ORM(常说的Hibernate)工具把JDBC封装下,如你说的update,只要提供个ID,表名,更新哪些字段,不就可以了。