day17 13.滚动结果集介绍

滚动

一般结果集只能是向下的,不是滚动的,你要是想让它滚动你得设置才行。


类名或者接口里面有静态的可以。接口里面的属性全部都是public static final,类名/接口名.是属性,这些都是常量。


结果集是你查询到的结果,数据库不是给你一个人玩的吧。在高并发访问的时候很容易出现一些问题。就是你在查的时候可能别人改了。问题:你查的时候别人改了,那就是你查到的是改了的还是查到的是没改了的呢?你得到改还是不改的。


滚动结果集怎么创建?通过设置参数来创建滚动结果集。对于一些特殊需求滚动结果集绝对是有用的。分页:把数据库的某些记录拿出来,数据库里面有100条记录,全显示出来的话一页显示100条,一页显示20条5页就OK了。拿出第3页的数据:把absolute定位到第3页的开始的位置,往下循环20次就OK了,这就是滚动结果集。这个方式是可以做分页的,但是后面不会这么做。这是通用的方案,根本就不需要考虑什么数据库,只要是java支持的数据库就行,因为使用了JDBC。JDBC是跨数据库的。但是这种方案性能太低,我们后面讲分页用的是数据库本身提供的一些分页的函数,它的性能高一些。要是有一天要做一个跨数据库的分页可以这么做。


package cn.itcast.jdbc;



import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


import cn.itcast.utils.JdbcUtils;

//后面开发滚动结果集用的不多,实际开发用的也不多
public class JdbcDemo7 {
   public static void main(String[] args) throws SQLException {
       //1.得到一个Connection
       Connection con= JdbcUtils.getConnectin();
       //2.得到一个执行sql语句Statement
       Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);//这就代表了一个滚动的可以更新的结果集
       
       //3.执行sql,得到结果集
      ResultSet rs = st.executeQuery("select * from user");
      
      //滚动结果集是可以向上向下跑,还可以绝对定位
      
      //4.定位
      
      //游标默认是在第一行上面,那你向上没了。所以是不行的
      //你得让这游标往下走才能向上嘛。
      rs.absolute(3);//3不是代表id值,代表的是一个绝对的物理行号
      //System.out.println(rs.getInt("id") + "   " + rs.getString("username") + "");
     
      //rs.afterLast();//afterLast就是直接达到结果集的最后面 最后一行的下面
      
      
     /* while(rs.previous()){
          System.out.println(rs.getInt("id") + "   " + rs.getString("username") + "");
      }*/
      
      rs.updateString("password","456");//对应哪个列进行修改
      rs.updateRow();
      //5.关闭
      rs.close();
      st.close();
      con.close();
   }
}
原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/6639634.html