/**
* 可滚动结果集滚动测试
*/
public static void testScrollResultSet() {
Connection conn = DBToolkit.getConnection();
String sql = "SELECT * FROM book";
try {
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.println("[行号:" + rs.getRow() + "]\t" + rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3));
}
System.out.println("------前滚操作-----");
//将光标移动到此 ResultSet 对象的上一行
rs.previous();
rs.previous();
System.out.println("[行号:" + rs.getRow() + "]\t" + rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3));
System.out.println("------绝对定位-----");
//将光标移动到此 ResultSet 对象的给定行编号。
rs.absolute(3);
System.out.println("[行号:" + rs.getRow() + "]\t" + rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3));
System.out.println("------移动到第一行-----");
//将光标移动到此 ResultSet 对象的第一行。
if (rs.first()) {
System.out.println("[行号:" + rs.getRow() + "]\t" + rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3));
}
System.out.println("------移动到最后一行-----");
//将光标移动到此 ResultSet 对象的第一行。
if (rs.last()) {
System.out.println("[行号:" + rs.getRow() + "]\t" + rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3));
}
System.out.println("------移动到第一行之前-----");
//将光标移动到此 ResultSet 对象的开头,正好位于第一行之前
rs.beforeFirst();
rs.next();
System.out.println("[行号:" + rs.getRow() + "]\t" + rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3));
System.out.println("------移动到最后一行之后-----");
//将光标移动到此 ResultSet 对象的末尾,正好位于最后一行之后。
rs.afterLast();
rs.previous();
System.out.println("[行号:" + rs.getRow() + "]\t" + rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3));
System.out.println("------相对当前行做移动-----");
rs.relative(-2);
System.out.println("[行号:" + rs.getRow() + "]\t" + rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3));
rs.close();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBToolkit.closeConnection(conn);
}
}
}
控制台输出:
[行号:1] 1 aaa a
[行号:2] 2 bbb b
[行号:3] 3 ccc c
[行号:4] 4 ddd d
[行号:5] 5 eee e
[行号:6] 6 fff f
[行号:7] 7 ggg g
[行号:8] 8 hhh h
------前滚操作-----
[行号:7] 7 ggg g
------绝对定位-----
[行号:3] 3 ccc c
------移动到第一行-----
[行号:1] 1 aaa a
------移动到最后一行-----
[行号:8] 8 hhh h
------移动到第一行之前-----
[行号:1] 1 aaa a
------移动到最后一行之后-----
[行号:8] 8 hhh h
------相对当前行做移动-----
[行号:6] 6 fff f
---------原结果集--------
[行号:1] 1 aaa a
[行号:2] 2 bbb b
[行号:3] 3 ccc c
[行号:4] 4 ddd d
[行号:5] 5 eee e
[行号:6] 6 fff f
[行号:7] 7 ggg g
[行号:8] 8 hhh h
---------插入一条记录--------
-------------更新一条记录-------------
---------插入更新后的结果集--------
[行号:1] 1 aaa a
[行号:2] 2 bbb b
[行号:3] 3 uuuu u
[行号:4] 4 ddd d
[行号:5] 5 eee e
[行号:6] 6 fff f
[行号:7] 7 ggg g
[行号:8] 8 hhh h
[行号:9] 9 xxxx x
分享到:
相关推荐
- 创建滚动结果集,可以使用 `Statement` 的构造函数指定结果集类型,如 `createStatement(int resultSetType, int resultSetConcurrency)`。 - 结果集的滚动方法包括 `next()`, `previous()`, `first()`, `last()...
`ResultSet.CONCUR_READ_ONLY`则表示这个结果集只能被用于读取,不能进行修改。 #### 二、JDBC批量更新 **批量更新**是指一次性执行多个更新操作,比如批量更新用户信息、产品信息等。批量更新的原理与批量插入...
Java数据库连接(JDBC)API提供了一种方式来与各种数据库进行交互,而可滚动结果集是JDBC的一部分,它允许开发人员在结果集中向前、向后移动,甚至可以定位到特定行。这与默认的只向前滚动的结果集不同,只向前滚动...
Java-JDBC【之】实现ORM,结果集映射实体类(ResultSet、注解、反射) 1.ORM实现思路 2.@Table、@Column、标识实体类 2.1.创建注解 @Table、@Column 2.2.标识实体类 2.3.数据库表 3.结果集解析,注解加反射填充实体...
最直接的方法是在创建`Session`时指定查询结果集为可滚动类型(scrollable)。这可以通过在Hibernate配置文件中设置`hibernate.connection.autocommit`属性为`false`,并在查询前手动设置事务,然后通过`Session`的`...
这样,Java应用程序就能通过JDBC API与DB2 11.5数据库进行交互,执行SQL语句,处理结果集,以及进行事务控制等操作。理解这些组件的作用和用法,对于开发和维护与DB2数据库交互的Java应用至关重要。
3. **结果集的滚动和分页(Scrollable Result Sets and Pagination)**:开发者可以前后移动结果集,实现分页查询,提升用户体验。 4. **数据源(DataSources)**:通过JNDI(Java Naming and Directory Interface)...
综上所述,当使用 JDBC 连接 Oracle 数据库并遇到字符集不同导致的乱码问题时,可以通过调整 SQL 语句的编码或结果集的编码来解决。这两种方法都可以有效地避免乱码问题的发生,但在实际应用中应根据具体情况选择最...
总结来说,JDBC2是Java与数据库交互的一个强大工具,它通过批处理、PreparedStatement、滚动结果集、存储过程、连接池、分布式事务和详细的异常处理等特性,极大地提升了开发效率和应用性能。对于任何Java数据库应用...
(3)掌握可滚动和可更新的结果集的基本操作方法; (4)理解JDBC中实现事务处理的基本方法; (5)理解数据库连接池的基本原理和思想,学会在tomcat服务器中配置数据库连接池,并掌握从连接池中获取连接的基本方法...
JDBC提供了连接数据库、执行SQL语句、处理结果集等功能,使得开发者无需关心底层数据库的细节,只需要关注业务逻辑。 DB2JCC4.jar是IBM DB2的JDBC Type 4驱动程序,Type 4驱动是纯Java实现,无需依赖本地库,因此...
这两个版本的驱动都包含了必要的类和接口,允许Java应用程序执行SQL查询、处理结果集、事务管理和连接管理等任务。 描述中提到"sqlserver数据库,Driver驱动jar包,最新官方原版",意味着这些驱动是由Microsoft官方...
SAP PI 的 JDBC 适配器允许系统通过 JDBC 连接到各种数据库,执行 SQL 操作并处理结果。这些操作可以包括插入(INSERT)、更新(UPDATE)、删除(DELETE)以及查询(SELECT)。为了确保数据的一致性和准确性,需要对传入的...
在本压缩包"impala数据库JDBC驱动集"中,我们很显然会找到用于连接和操作Impala数据库的JDBC驱动程序。 Impala的主要特点包括其并行查询执行模型,它能够快速地处理PB级别的数据,而无需将数据从HDFS或HBase中提取...
9. **性能优化**:JDBC提供了多种优化技巧,如关闭不再需要的资源(如结果集、Statement和连接),使用连接池来重用连接,以及合理使用`PreparedStatement`避免SQL注入。 10. **JDBC API的扩展**:随着技术的发展,...
实现JDBC结果集的转换
4. **执行SQL操作**:一旦连接建立,你可以创建`Statement`或`PreparedStatement`对象来执行SQL查询或更新,处理结果集,并进行事务管理。 5. **关闭资源**:在完成数据库操作后,记得关闭打开的连接、语句和结果集...
3. **结果集(ResultSet)**:执行查询后,结果会返回一个ResultSet对象,通过遍历该对象可以获取查询到的数据。 4. **事务管理**:JDBC提供了Connection对象的commit()和rollback()方法,用于控制事务的提交和回滚...
在使用JDBC过程中,经常需要处理查询结果集`ResultSet`。`ResultSet`对象表示执行SQL语句后返回的结果集,它提供了对结果集中数据的操作方法。 **详细解析:** 1. **`ResultSet`的概念:** - `ResultSet`是一个可...
5. **处理结果集**:对于`executeQuery()`返回的结果集,可以使用`ResultSet`进行迭代,获取和处理数据。 6. **关闭资源**:使用完毕后,记得关闭`ResultSet`, `Statement`和`Connection`,避免资源泄漏。 在实际...