当我们执行数据库查询返回一个ResultSet的时候,很多情况下我们需要知道这个ResultSet的大小,即它的行数和列数。我们知道它的列数可以通过resultSet.getMetaData().getColumnCount()很容易地得到,然而,java API没有提供直接访问ResultSet行数的接口。

这个时候,有三个办法可以解决:

1.改用select count语句,然后直接从ResultSet里面获取结果:

        try {Statement statement = connection.createStatement();ResultSet resultSet = statement.executeQuery("select count(*) as rowCount from tableName");resultSet.next();int rowCount = resultSet.getInt("rowCount");} catch (Exception e) {// TODO: handle exception
            e.printStackTrace();}

但是,我们执行数据库查询不光要知道结果的行数,往往接下来还要用到查询结果。如果用此方法,还需要再执行一次select语句,才能得到想要的结果集,这样,就多了一次数据库查询,大大降低了执行速度。

2.遍历Resultset,用一个变量记录行数。代码如下:

        int count = 0;try {while(resultSet.next()){count = count + 1;}} catch (SQLException e1) {// TODO Auto-generated catch block
            e1.printStackTrace();}

这样获取的count值就是结果集的行数。然而,这种方法同第一种方法的问题一样,不能再使用结果集了。因为这时候指针已经移动到结果集的外面了,不再指向任何记录。

3.知道了第二种方法中问题的原因,我们就知道如何更好地解决这个问题了。第二种方法的问题在于返回的结果集中的指针不能自由移动,幸好java为我们提供了选择,可以让我们创建指针可以自由移动的结果集,所需要做的只有一件事,就是在创建Statement的时候,加上两个参数:

        try {//Statement statement = connection.createStatement();
            Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSet resultSet = statement.executeQuery("select * from " + tableName);} catch (Exception e) {// TODO: handle exception
            e.printStackTrace();}

这样获得的结果集,指针就可以在其中自由移动。然后,就可以用如下方法获取结果集的行数:

        int rowCount = 0;try {resultSet.last();rowCount = resultSet.getRow();} catch (Exception e) {// TODO: handle exception
            e.printStackTrace();}

其中resultSet.last()就是将指针移动到结果集的最后一条记录;然后用resultSet.getRow()获取指针当前所在的行号(从1开始)

如果接下来你还要使用结果集,别忘了将指针移到第一行:

resultSet.first();

既然结果集是可滚动的,当然可以用absolute()方法访问指定行号的记录:

boolean java.sql.ResultSet.absolute(int row) throws SQLException

其中row参数可正可负,具体含义查一下ResultSet的absolute()方法就知道了。

如何获取ResultSet的行数和列数相关推荐

  1. PyQt5 技术篇-设置QTableWidget表格组件默认值实例演示,如何获取QTableWidget表格组件里的值,获取表格的行数和列数

    self.tableWidget.setItem(0, 0, QTableWidgetItem("设置值的内容")) 可以设置指定单元格里的值. self.tableWidget. ...

  2. python怎么选取第几行第几列_python DataFrame获取行数、列数、索引及第几行第几列的值方法...

    python DataFrame获取行数.列数.索引及第几行第几列的值方法 更新时间:2018年04月08日 16:22:00 作者:小白九九 下面小编就为大家分享一篇python DataFrame ...

  3. Pandas行数和列数获取

    一.df的行数和列数获取 def del_pd_data(panda):count = 0data = []nums = panda.shapefor i in range(0, nums[1]):l ...

  4. Python使用numpy获取列表行数、列数

    生成形状为3x3的二维整数数组 a = np.random.randint(1, 100, (3, 3))[[50 90 85][83 58 53][85 71 92]] Python使用numpy获 ...

  5. Pandas 获取 Dataframe 总的行数 和 列数

    Pandas 获取 DataFam 总的行数 和 列数 返回列数: df.shape[1] 返回行数: df.shape[0] 或者:len(df)

  6. python中获取矩阵的行数和列数

    python中如何获取矩阵的行数和列数呢? 可以通过 a.shape[0] 和 a.shape[1] 来分别获取矩阵a的行数和列数,如下: import numpy as npa = np.array ...

  7. Py之Xlrd:Xlrd的使用方法总结(获取的sheet名字/sheet索引/sheet内容/数和列数、获取整行和整列的值(列表) 、指定单元格的内容/数据类型)之详细攻略

    Py之Xlrd:Xlrd的使用方法总结(获取的sheet名字/sheet索引/sheet内容/数和列数.获取整行和整列的值(列表) .指定单元格的内容/数据类型)之详细攻略 目录 Xlrd的使用方法总 ...

  8. C语言 二维数组行数和列数计算 - C语言零基础入门教程

    目录 一.计算一维数组长度 二.计算二维数组长度 1.二维数组行数 2.二维数组列数 3.二维数组的元素个数 = 二维数组行数 * 二维数组列数 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C ...

  9. Python中ArcPy栅格裁剪栅格:批量对齐栅格图像范围并统一行数与列数

      本文介绍基于Python中ArcPy模块,实现基于栅格图像批量裁剪栅格图像,同时对齐各个栅格图像的空间范围,统一其各自行数与列数的方法.   首先明确一下我们的需求.现有某一地区的多张栅格遥感影像 ...

最新文章

  1. 这或许是东半球分析十大排序算法最好的一篇文章
  2. mysql随机查询 uuid_mysql实现随机查询经验谈
  3. Android进程使用Messenger通信
  4. 经典C语言程序100例之十六
  5. 使用python来操作redis用法详解
  6. 通俗易懂,Maven依赖pom中的scope详解
  7. 将一个datetime的now转换为只有日期的_不要眨眼!中英文、大小写转换,一秒就搞定!
  8. Mybatis报错:nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘XXX‘ not found
  9. 设计灵感|优秀案例教你如何像杂志一样排版?
  10. Mybatis: 接口编程的实现
  11. 台式电脑一直跳一个计算机页面出来,我的电脑界面上莫名其妙的多出了好几个IE浏览器拜托各位了 3Q...
  12. 蚂蚁森林用户须知_公益传播视角下“蚂蚁森林”的用户使用行为研究
  13. nodejs 做后台的一个完整业务整理
  14. 太阳影子定位问题研究
  15. 常见的IC封装形式大全
  16. 本科专业计算机课程,本科计算机专业有哪些课程
  17. 设计模式 - 桥接模式 ( Bridge ) 平时用的少
  18. mysql查询父子关系树_根据数据的父子关系创建树形结构并实现遍历
  19. 关于JAVA WEb如何连接Matlab
  20. Excel怎么快速截取图片?

热门文章

  1. POJ2135 来回最短路(简单费用流)
  2. 操作系统原理第二章:操作系统结构
  3. 【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )
  4. 【组合数学】递推方程 ( 递推方程示例 2 汉诺塔 | 递推方程示例 3 插入排序 )
  5. 服务 TCP 断线错误分析
  6. 邂逅 2008-06-27 23:24
  7. 2017 ACM/ICPC(西安)赛后总结
  8. 1063. Set Similarity (25)
  9. php读取html文件(或php文件)的方法
  10. 优化内存中DataTable搜索速度,IP区域汇总