可保持的ResultSet正常情况下如果使用Statement执行完一个查询,又去执行另一个查询时这时候第一个查询的结果集就会被关闭,也就是说,所有的Statement的查询对应的结果集是一个,如果调用Connection的commit()方法也会关闭结果集。可保持性就是指当ResultSet的结果被提交时,是被关闭还是不被关闭。JDBC2.0和1.0提供的都是提交后ResultSet就会被关闭。不过在JDBC3.0中,我们可以设置的对象的创ResultSet是否关闭。要完成这样的ResultSet建,要使用的Statement的创建要具有三个参数,这个Statement的创建方式也就是,我所说的Statement的第三种创建方式。如下: Statement st=createStatement(int resultsetscrollable,int resultsetupdateable,int resultsetSetHoldability)ResultSet rs = st.excuteQuery(sqlStr);前两个参数和两个参数的createStatement方法中的参数是完全相同的,这里只介绍第三个参数: resultSetHoldability表示在结果集提交后结果集是否打开,取值有两个: ResultSet.HOLD_CURSORS_OVER_COMMIT:表示修改提交时,不关闭数据库。 ResultSet.CLOSE_CURSORS_AT_COMMIT:表示修改提交时ResultSet关闭。不过这种功能只是在JDBC3.0的驱动下才能成立。
但是如果采用数据持久层和业务逻辑分开来来,在DAO层生成sta和rs,那我们现在要考虑的问题是什么时候关闭sta rs 和con的问题 。DAO往Bean传递的是rs 可以在使用完成之后关闭 CON可以在Bean最后的finally{}中进行关闭 。那么sta在什么时候关闭?
正常的关闭顺序如下:
if (rs != null) rs.close();
if (sta != null) sta.close();
if (con != null) con.close();
疑问:是否设置了 ResultSet.HOLD_CURSORS_OVER_COMMIT后执行rs.close()后,还可以访问rs中的方法和数据????
分享到:
相关推荐
确保正确管理和提交事务以保持数据一致性。 6. `ResultSet`的类型: 有三种类型的`ResultSet`,它们定义了结果集的滚动行为: - `TYPE_FORWARD_ONLY`:只能向前滚动,这是默认类型。 - `TYPE_SCROLL_INSENSITIVE`:...
ResultSet是Java数据库连接(JDBC)...在创建Statement或PreparedStatement对象时,通过设置适当的参数(如`ResultSet.TYPE_SCROLL_INSENSITIVE`,`ResultSet.CONCUR_UPDATABLE`等)来创建可滚动和可更新的ResultSet。
标题“ResultSet_to_json.jar”指的是一个Java应用程序,其主要功能是将数据库查询结果集(ResultSet)以及List等...在实际应用中,使用这样的工具可以极大地提高开发效率,减少手动转换的错误,并保持代码的简洁性。
在Java的数据库编程中,我们经常需要...通过这样的方式,我们可以让数据库操作更加简洁,同时保持代码的可读性和可维护性。在实际项目中,许多ORM框架如MyBatis和Hibernate都提供了类似的功能,进一步提升了开发效率。
为了解决这个问题,POI从3.8.4版本开始引入了SXSSFWorkbook接口,允许设置在内存中保持的行数。当超过这个限制时,每新增一行,它会将较早的行写入磁盘,以减少内存压力。然而,这种方式频繁地写入磁盘可能会影响...
4. 内容编码:为了保持数据的可读性和兼容性,XMLWriter会按照XML规范对特殊字符进行转义。 5. 结束元素:当所有数据写入完成后,XMLWriter会关闭当前元素,确保XML文档的结构完整。 6. 错误处理:在转换过程中,XML...
- **示例**:`Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);` #### 四、PreparedStatement类详解 `...
任何修改字符串的操作(如`substring()`、`concat()`)都会返回一个新的`String`对象,而原始对象保持不变。这是为了提高性能和线程安全性。 ### 3. 字符串常量池 Java虚拟机维护了一个字符串常量池,存储所有的...
在IT领域,数据库访问层(Database Access Layer,DAL)是应用程序与数据库系统之间的桥梁,它负责处理所有数据相关的操作,确保业务逻辑与数据存储的分离,提高代码的可复用性和可维护性。本篇文章将探讨如何利用...
通过这种方式,Java开发者可以有效地利用Oracle数据库的强大功能,同时保持代码的可维护性和灵活性。这个过程中涉及的知识点包括JDBC连接管理、存储过程调用、结果集处理,以及对Oracle特定特性的理解,如游标作为...
此行代码创建了一个`Statement`对象,该对象生成的`ResultSet`是可滚动的(支持前后移动),但只能读取数据,不能修改。 ##### 2. 示例代码解析 接下来,我们来看具体的示例代码: ```java public class aa { ...
开发者必须手动管理数据库连接,并且ResultSet通常只能向下滚动,不可更新。为了解决这些问题,引入了JdbcRowSet接口。 首先,JdbcRowSet是一个连接的行集,它与传统的ResultSet有所不同。传统ResultSet在使用完毕...
这样的设计既保持了代码的简洁性,也提高了系统的可扩展性。在实际项目中,还可以考虑使用成熟的分页库,如MyBatis的PageHelper或者Spring Data JPA的Pageable接口,它们提供了更强大和灵活的分页解决方案。
JDBC技术为Java程序访问数据库提供了标准的方法,它支持不同类型的数据库系统,使得Java开发者在操作数据库时可以保持代码的可移植性和重用性。Java的JDBC API是构建在Java中实现数据持久化和数据库操作的基础,它...
ResultSet是数据库查询的结果集,需要保持与数据库的连接。而Rowset可以脱离连接独立工作,且提供了更多的功能,如滚动、定位和事件处理。 7. **Rowset的局限性** 虽然Rowset有许多优点,但也有其局限性。例如,...
8. **可滚动的结果集**: ResultSet对象默认是不可滚动的,但通过设置`ResultSet.TYPE_SCROLL_INSENSITIVE`和`ResultSet.CONCUR_READ_ONLY`,可以创建一个可滚动的结果集,允许前后移动和检查是否已到达结果集的末尾...
与传统的ResultSet相比,RowSet可以在不保持数据库连接的情况下操作数据,这对于减少资源消耗和提高性能有着显著的影响。 首先,让我们了解RowSet的离线特性。传统的ResultSet需要与数据库保持持续的连接,这在处理...
5. **事务管理**:JDBC支持事务的开始、提交、回滚,这对于保持数据的一致性和完整性至关重要。 6. **批处理**:通过Batch Updates,可以一次发送多个SQL语句给数据库,提高执行效率。 7. **JDBC API的主要类和...
**JavaServer Pages (JSP)** 是一种用于创建动态网页的技术,它是Java平台的一部分,提供了Web开发者一种简单的方式来构建可扩展的、与平台无关的Web应用。JSP与HTML结合使用,允许开发人员在HTML页面中嵌入Java代码...