javaweb学习——JDBC(五)
管理结果集
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里包含了多少列,以及每列的数据类型和每列的名称,但是使用该对象是需要一定的系统开销的,没有必要的话就不要使用此对象了。
最新文章
- Computer vision labs
- java中Comparable实现对象的比较
- PHP zendframework phpunit 深入
- 软件工程个人项目--Word frequency program
- javascript设计模式7
- Android开发环境的搭建之(一)Java开发环境的安装
- $.cookie is not a function
- android搭建环境错误 daemon not running. starting it now on port 5037 ADB server didn't ACK
- 关于php判断中文字符的问题
- Parallels Desktop 12
- JavaWeb之商品查看后历史记录代码实现
- awk骚操作
- PyCharm 新建文件时默认添加作者时间等
- mysql5.7 主从同步
- shiro中的授权
- 第四章 栈与队列(a)栈接口与实现
- Linux常用基本命令[cp]
- 20145226夏艺华 《Java程序设计》第5周学习总结
- Scrapy官网程序执行示例
- 高性能mysql第三版(文摘)
热门文章
- @echo off命令
- 留学Essay写作常见谬误盘点
- 八、React实战:可交互待办事务表(表单使用、数据的本地缓存local srtorage、生命同期函数(页面加载就会执行函数名固定为componentDidMount()))
- vue学习(十二)vue全家桶 Vue-router&;Vuex
- CodeForces - 782B The Meeting Place Cannot Be Changed(精度二分)
- 2016蓝桥杯省赛C/C++A组第八题 四平方和
- UVA - 10791 Minimum Sum LCM(最小公倍数的最小和)
- 安装双系统(win8+ubuntu16)
- MySQL表连接原理
- c# 循环界面控件