Java JDBC 中获取 ResultSet 的大小

当我们执行完一条Sql语句,获取到一个 ResultSet 对象后,有时我们需要立即知道到底返回了多少个元素,但是 ResultSet 并没有提供一个 size() 方法 or length 的属性,我们可以一个一个调用 next() 去累加计算,但是我们还有更好的办法 :


PreparedStatement statement = ......;

ResultSet results = statement.executeQuery();

// 将游标移动到最后一行上

results.last(); 

// 得到当前的 row number,在 JDBC 中,row number 从1开始,所以这里就相当于行数

int rowCount = results.getRow();

//此时游标执行了最后一行,如果我们后面还想从头开始调用 next()遍历整个结果集,我们可以将游标移动到第一行前面

results.beoreFirst();

// 通过上述这步操作,我们算是回复了结果集到初始状态(即刚查询出来的状态)


注意 :上述这一系列移动游标的操作是有前提的,我们的结果集必须是 scrollable(可滚动的) !这个是由 statement 对象决定,我们在创建 statement 对象可以指定如下参数 :


conn = getConnection();
statement = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

通过上述 statement 获取的 ResultSet 就是可以滚动的,如果我们只是 conn.prepareStatement(sql) 来获取的 statement 对象,是不可以滚动的(只可以调用 next() 向前遍历),调用任何上述移动游标的方法,都会抛出 SQLException .


ResultSet 还为我们定义了如下常量 :

ResultSet.TYPE_FORWARD_ONLY只能向前滚动
ResultSet.TYPE_SCROLL_INSENSITIVE和Result.TYPE_SCROLL_SENSITIVE这两个方法都能够实现任意的前后滚动,使用各种移动的ResultSet指针的方法。




要使用JDBC获取DB2表的字段,你可以按照以下步骤进行操作: 1. 导入必要的包和类: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; ``` 2. 建立数据库连接: ```java String url = "jdbc:db2://hostname:port/databaseName"; String username = "yourUsername"; String password = "yourPassword"; Connection connection = DriverManager.getConnection(url, username, password); ``` 请将"hostname"替换为DB2服务器的主机名,"port"替换为DB2服务器的端口号,"databaseName"替换为要连接的数据库名称,"yourUsername"和"yourPassword"分别替换为您的DB2用户名和密码。 3. 创建Statement对象: ```java Statement statement = connection.createStatement(); ``` 4. 执行SQL查询语句: ```java String sql = "SELECT * FROM yourTableName"; ResultSet resultSet = statement.executeQuery(sql); ``` 请将"yourTableName"替换为您要查询的表的名称。 5. 获取结果集的字段信息: ```java ResultSetMetaData metaData = resultSet.getMetaData(); int columnCount = metaData.getColumnCount(); for (int i = 1; i <= columnCount; i++) { String columnName = metaData.getColumnName(i); String columnType = metaData.getColumnTypeName(i); int columnSize = metaData.getColumnDisplaySize(i); System.out.println("Column Name: " + columnName); System.out.println("Column Type: " + columnType); System.out.println("Column Size: " + columnSize); } ``` 上述代码通过ResultSetMetaData类获取结果集的字段信息,包括字段名称、字段类型和字段大小等。 6. 关闭连接和相关资源: ```java resultSet.close(); statement.close(); connection.close(); ``` 确保在使用完之后关闭连接和相关资源,以释放数据库资源和避免内存泄漏。 这就是使用JDBC从DB2表获取字段信息的基本步骤。希望对你有所帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值