每执行一次数据库查询, 获得一个结果集ResultSet对象, 就会在数据库中产生一个游标与此结果集对应. 十分不理解 数据库游标 跟 ResultSet之间是如何协同工作的?    ResultSet中已经包含了全部查询结果吗?ResultSet 执行 next(), last()等移动游标的方法, 这个游标就是数据库的游标吗?
请指点,  十分费解!!!!

解决方案 »

  1.   

    1、是这样的,每次执行一段查询语句,数据库就会生成一个隐式游标。至于隐式游标方面的,关注点不要太高
    游标与结果集的关系类似于下标跟数组的关系,类似啊,不要理解失误。
    2、结果集包含了全部查询结果(只要你的查询语句写的正确,那么取得的结果集就是你想要的全部数据)
    3、next()、和last()移动就是你这查询语句所伴随的隐式游标。
    额,这方面我也是看相关的书籍,你得再详细研究一下
      

  2.   


    十分不理解 数据库游标 跟 ResultSet之间是如何协同工作的?  
    如果是只读打开的话,游标和数据库没有关系,只是ResultSet自已标记ResultSet中已经包含了全部查询结果吗?
    是的
    ResultSet 执行 next(), last()等移动游标的方法, 这个游标就是数据库的游标吗?
    前面说过,可读情况下,可以理解为ResultSet和数所据库没有关系。
      

  3.   

    ResultSet中已经包含了全部查询结果吗?
    不包含  只包含很少的rowid ...
    ResultSet 执行 next(), last()等移动游标的方法, 这个游标就是数据库的游标吗?
    你可以这么认为
      

  4.   

    ResultSet中并不包含查询出来的全部结果,默认好像是只有10条记录。
    这个你可以自己写一段程序验证一下,数据库里面准备100条记录,然后在next()方法上面打个断点调试。
    程序第一进来之后(也就是查询结束后),拔掉网线,单步调试就知道结果了。至于移动游标的方法,好像只有向后移动,也就是说是单向移动。
    不过听说好像可以实现双向移动,但是我不会,如果有会的高手,还望赐教!!!
    (估计要修改JDBC代码,或者数据库方面的配置之类的)
      

  5.   

    ResultSet中其实并不包含任何的通过sql与句查询的内容,说的再明白一点就是返回的ResultSet只是拿到了结果集的句柄也就是引用本身并不包含任何的数据内容。