ResultSet,RowSet,OracleCachedRowSet和RowSetMetaData区别及联系
在java主要涉及到数据开发的过程中,我们会和数据库打交道很多,其中使用了数据集比如ResultSet和RowSet,经常使用两种,还有其它的一些,那么这两种的主要区别是什么呢?我们先来看它们引入的方式,ResultSet:import java.sql.ResultSet; RowSet: import javax.sql.RowSet; 典型的区别是引入的路径不一样:
java和javax都是Java的API(Application Programming Interface)包,java是核心包,javax的x是extension的意思,也就是扩展包。java类库是java发布之初就确定了的基础库,而javax类库则是在上面增加的一层东西,就是为了保持版本兼容要保存原来的,但有些东西有了更好的解决方案,所以,就加上些。
所以我们就可以知道ResultSet要比RowSet出现的早,就是java发布初期就存在的,我们查询API也可以看到RowSet是从version 1.4才有的,public interface RowSet extends ResultSet
RowSet
接口扩展了标准 java.sql.ResultSet
接口。RowSetMetaData
接口扩展了 java.sql.ResultSetMetaData
接口.
那么我们在使用的时候尽量使用扩展的RowSet就可以满足要求:
Connection dbconn = null; PreparedStatement psQuery = null; RowSet rsQuery = null; String sQuery = "select a,b from table"; try{
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
dbconn =
DriverManager.getConnection(
"xxxx",
"username",
"ps");
dbconn.setAutoCommit(false); psQuery=dbconn.prepareStatement(sQuery); rsQuery = psQuery.executeQuery(); while (rsQuery.next()) {
String name = rsQuery.getString("a");
logger.info("user name is: "+name);
} } catch (SQLException e){
e.printStackTrace();
}
而CachedRowSet
对象是一个数据行的容器,可在内存中缓存其各行,这使得进行操作时无需总是连接到数据源,CachedRowSet
对象是一个非连接 rowset,这意味着它只会短暂地连接其数据源。在需要连接后及时断开数据源的情境下可以使用缓存RowSet,也就是CachedRowSet,
那么OracleCachedRowSet就是Oracle对于CachedRowSet的扩展实现。
RowSetMetaData那么就是扩展了ResultSetMetaData, 顾名思义就是元数据,就是基础信息,比如列的数量,类型等,常用的比如需要得到列数目getColumnCount():
所以简单总结就是RowSet是对ResultSet的扩展,MetaData是元数据,CachedRowSet则是可以缓存不需要实时连接数据源的。
ResultSet,RowSet,OracleCachedRowSet和RowSetMetaData区别及联系的更多相关文章
- ResultSet几种类型的区别
TYPE_FORWARD_ONLY: 默认方式,结果集不能滚动,游标只能向前移动,从第一行移动到最后一行.结果集中的内容与底层数据库生成的结果有关,即生成的结果与查询有关. TYPE_SCROLL_I ...
- 数据库连接不关闭造成的问题以及RowSet的使用
这几天给项目做性能压力测试,发现一个方法压力200之后就会把整个系统弄停掉.仔细检查发现是开发人员调用数据库的写法有问题.用的是spring的jdbcTemplate,在使用回调的时候,在回调里又做了 ...
- JSP列表形式显示数据库中的数据 OracleCachedRowSet 实例
现在数据库中有一张用户表,希望用户在jsp页面中输入用户名和密码以及 用户类型,在servlet中插入数据库后,在另一个jsp页面中把数据库中所有的用户名和类型都以列表的形式列出来 可以用Ora ...
- 由DB2分页想到的,关于JDBC ResultSet 处理大数据量
最近在处理DB2 ,查询中,发现如下问题.如果一个查询 count(*),有几十万行,分页如何实现 select row_number() over (order by fid desc ) as r ...
- JDBC 学习笔记(八)—— ResultSet
JDBC 使用 ResultSet 来封装 SQL 的查询结果,可以将 ResultSet 类比为数据库表的查询结果. 它拥有如下两个性质: 可滚动. 可更新. 这两个性质,是在创建 Statemen ...
- 将CachedRowSet中的数据转储到对象中
虽然还有很多bug,但凑合能用,就是将CachedRowSet中的数据转换成对象或List.省去了繁琐难看的一系列get/set方法. 先说调用: 注: cachedRowSet是查询的结果集 Stu ...
- Java精选笔记_JDBC
JDBC 概述 什么是JDBC JDBC全称是Java数据库连接(Java Database Connectivity),应用程序可通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中数据 ...
- JDBC 及 sql注入问题
一.相关概念 1.什么是JDBC JDBC(Java Database Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由 ...
- 普通结果集ResultSet和离线结果集RowSet(四)
数据库的查询操作会得到一系列数据,JDBC API也提供了相关对象来接收查询结果集. 一.ResultSet java.sql.ResultSet接口表示数据库查询的结果集. JDBC提供以下连接方法 ...
随机推荐
- rails无法使用页面缓存的解决办法
书上云在config/envirionments/development.rb中开启了缓存机制后,我们即可以使用缓存鸟: config.action_controller.perform_cach ...
- Git学习备忘
本文参考廖雪峰写的精彩的git学习文档,大家可以直接去官网看原版,我这里只是便于自己记录梳理 原版地址:http://www.liaoxuefeng.com/wiki/0013739516305929 ...
- C# 合并多种格式文件为PDF
文档合并是一种高效文档处理方式.如果能够有一个方法能将多种不同类型的文档合并成一种文档格式,那么在文档存储管理上将为我们提供极大的便利.因此,本篇文章介绍了一种如何使用免费组件Free Spire.O ...
- Nginx + IIS实现负载均衡 Session多站点共享
日子过得太索然无味了,研究了一下,所谓的负载均衡(主要是windows服务器IIS下的).先看看分析图:环境:linux服务器: centos 6.3windows服务器: windows serve ...
- PhpStorm php配置环境
如果你需要在Windows上安装PHP环境,并使用PhpStorm进行脚本编写进行编译,不需要WEB环境展示,那么本小结适合. 软件环境:Windows10+PHP7.1+PhpStorm2018 0 ...
- Java + Selenium + TestNG + Maven
环境准备: 1. Java: Install Java jdk: Version: java 1.8 or aboveConfigure Java Environment Variables:Add ...
- PLSQL 创建自定义函数注意事项
2017-6-8周四,今天遇到的需求是,从数据库中查找出某张表的某些数据,并将这些数据做简单的加减运算再得到结果集,没有思路,后来问辉哥,给我的建议是给这些运算封装成一个SQL函数,select选择字 ...
- linux利用命令重置大量密码
yum -y install expectmkpasswd -l 10 -v was | grep 'is *' >> 123.txtmkpasswd -l 10 -v logv | ...
- TensorFlow实践笔记(一):数据读取
本文整理了TensorFlow中的数据读取方法,在TensorFlow中主要有三种方法读取数据: Feeding:由Python提供数据. Preloaded data:预加载数据. Reading ...
- Kinect 骨骼追踪数据的处理方法
http://www.ituring.com.cn/article/196144 作者/ 吴国斌 博士,PMP,微软亚洲研究院学术合作经理.负责中国高校及科研机构Kinect for Windows学 ...