jdbc 中resultset分析

阅读数:75 评论数:0

跳转到新版页面

分类

python/Java

正文

jdbc1.0 jdbc2.0 jdbc3.0中分别用以下方法创建Statement。

jdbc1.0: createStatement()

jdbc2.0: createStatement(resultSetType,resultSetConcurrency)

jdbc3.0: createStatement(resultSetType,resultSetConcurrency,resultSetHodability)

一、ResultSetType

1、ResultSet.TYPE_FORWARD_ONLY

默认的cursor类型,仅仅支持结果集forward,不支持backforward、random、last、first等操作。

2、ResultSet.TYPE_SCROLL_INSENSITIVE

从数据库取出数据后,会把全部数据缓存到cache中,对结果集的后续操作,是操作的cache中的数据,数据库中记录发生变化后,不影响cache中的数据,所以ResultSet对结果集中的数据是INSENSITIVE的。

3、ResultSet.TYPE_SCROLL_SENSITIVE

从数据库中取出数据后,不是把全部数据缓存到cache中,而是把每条数据的rowid缓存到cache中,对结果集后续操作时,是根据rowid再去数据库中取数据。所以数据库中记录发生变化后,通过ResultSet取出的记录是最新的,即ResultSet是SENSITIVE的。但insert和delete操作不会影响到ResultSet,因为insert数据的rowid不在ResultSet取出的rowid中,所以insert的数据对ResultSet是不可见的,而delete数据的rowid依旧在ResultSet中,所以ResultSet仍可以取出被删除的记录(因为一般数据库的删除是标记删除,不是真正在数据库文件中删除)。

二、ResultSetConcurrency

1、ResultSet.CONCUR_READ_ONLY

在ResultSet中的数据记录是只读的,不可以修改。

2、ResultSet.CONCUR_UPDATABLE

在ResultSet中数据记录可以任意修改,然后更新到数据库,可以插入、删除、修改。

三、ResultSetHoldability

1、HOLD_CURSORS_OVER_COMMIT

在事务commit或rollback后,ResultSet仍然可用。

2、CLOSE_CURSORS_AT_COMMIT

在事务commit或rollback后,ResultSet被关闭。

 




相关推荐

一、概述 1、spring容器 spring中有三种bean容器:BeanFactory、ApplicationContext、WebApplicationContext。 (1)BeanFactor

如果你不使用连接池,那没有什么问题,一旦Connection关闭,数据库物理连接被释放,所有相关Java资源也可以被GC回收。但是如果你使用连接

public boolean validateTableExist(String tableName){ boolean flag = false; try { Dat

一、概述 jdbc的executeQuery()不是将查询结果一次性放到ResultSet中,而是分批放入ResultSet中,一般情况下是每次10条记录,即fetchSize默认为10。 当数据到达

一、概述 1、读写分离 数据库主节点压力比较大,需要增加从节点提供读操作,以减少压力。 2、多数据源 一个复杂发项目,因为没有拆分服务,需要连接多个业务的数据源。 这些场景都需要使用springboo