管理结果集

  JDBC使用ResultSet来封装查询到的结果集,然后移动记录指针来取出结果集的内容,除此之外,JDBC还允许通过ResultSet来更新记录,并提供了ResultSetMetaData来获取ResultSet对象的相关信息。

可滚动的结果集.

ResultSet接口中的方法:

  boolean next():将光标向下移动一行,

  boolean absolute(int row):将光标移动到指定的行。

  void afterLast():移动到结果集的末尾,既最后一行的末尾。

  void beforeFirst(): 将光标移动到结果集的开头,既第一行的前面。

  boolean previous():将光标移动到上一行

  boolean last():将光标移动到最后一行

可滚动可更新的结果集:

  ResultSet定位指针的方法有很多,但是只使用了next方法来移动指针,实际上也可以使用其他方法来移动指针,使用absolute(),previous(),afterLast()等方法自由移动指针的结果集被称为可滚动的结果集。

  在JDK1.4之前,默认打开的ResultSet是不可以滚动的,必须在创建Statement或者PrepareStatement时传入额外的参数,从Java5.0以后,默认打开的ResultSet就是可滚动的结果集,无需传入额外ide参数。

  以默认方法打开的结果集是不可更新的,如果希望创建可更新的结果集,则必须在创建Statement或者PrepareStatement时传入额外的参数,Connection在创建Statement或者Prepared Statement时还可以传入如下的两个参数。

  ResultSetType:控制ResultSet的类型,该参数的取值可以取如下三个值(指定结果集是否可滚动,是否敏感):

    ResultSet.TYPE_FORWARD_ONLY:该常量控制指针只能向前移动,只是JDK1.4以前的默认值。

    ResultSet.TYPE_SCROLL_INSENSITIVE:该常量控制指针可自由移动,但是地底层的数据改变是不会影响ResultSet的内容(既数据库的变化时不会影响结果集的);

    ResultSet.TYPE_SCROLL_SENSITIVE:该常量控制指针可以自由移动,但是底层的数据改变是会影响结果集的内容。

  resultSetConcBLEurrency:控制ResultSet的并发类型,该参数有两个(是否可更新):

    ResultSet.CONCUR_READ_ONLY:该常量指示结果集是只读的并发模式(默认);

    ResultSet.CONCUR_UPDATA:该常量指示结果集是可更新的并发模式

使用ResultSetMateDate分析结果集

  当执行SQL查询后可通过移动记录指针来遍历ResultSet的每条记录,但是程序可能不清楚该结果集中包含哪些数据列,以及每个数据列的数据类型,那么可通过ResultSetMateDate来获取关于ResultSet的描述信息。

  MetaData的意思是元数据,既描述其他数据类型的数据,因此ResultSetMateDate封装了描叙ResultSet对象的数据;

  ResultSet里包含了一个getMetaData()的方法,该方法返回ResultSet对应的ResultMataData对象,一但获取了ResultSet的ResultSetMetaData对象,就可以通过ResultSetMetaData来返回ResultSet的描述信息。常用的方法有三个:

    int getColumnCount():返回该ResultSet的列数量。

    String getColumnName(int column):返回指定索引的列名;

    int getColumnType(int column):返回指定索引的列类型;

  虽然ResultSetMetaDate可以准确的分析出ResultSet里包含了多少列,以及每列的数据类型和每列的名称,但是使用该对象是需要一定的系统开销的,没有必要的话就不要使用此对象了。

  

最新文章

  1. Computer vision labs
  2. java中Comparable实现对象的比较
  3. PHP zendframework phpunit 深入
  4. 软件工程个人项目--Word frequency program
  5. javascript设计模式7
  6. Android开发环境的搭建之(一)Java开发环境的安装
  7. $.cookie is not a function
  8. android搭建环境错误 daemon not running. starting it now on port 5037 ADB server didn't ACK
  9. 关于php判断中文字符的问题
  10. Parallels Desktop 12
  11. JavaWeb之商品查看后历史记录代码实现
  12. awk骚操作
  13. PyCharm 新建文件时默认添加作者时间等
  14. mysql5.7 主从同步
  15. shiro中的授权
  16. 第四章 栈与队列(a)栈接口与实现
  17. Linux常用基本命令[cp]
  18. 20145226夏艺华 《Java程序设计》第5周学习总结
  19. Scrapy官网程序执行示例
  20. 高性能mysql第三版(文摘)

热门文章

  1. @echo off命令
  2. 留学Essay写作常见谬误盘点
  3. 八、React实战:可交互待办事务表(表单使用、数据的本地缓存local srtorage、生命同期函数(页面加载就会执行函数名固定为componentDidMount()))
  4. vue学习(十二)vue全家桶 Vue-router&Vuex
  5. CodeForces - 782B The Meeting Place Cannot Be Changed(精度二分)
  6. 2016蓝桥杯省赛C/C++A组第八题 四平方和
  7. UVA - 10791 Minimum Sum LCM(最小公倍数的最小和)
  8. 安装双系统(win8+ubuntu16)
  9. MySQL表连接原理
  10. c# 循环界面控件