文档章节

Resultset获取行数和列数

乐在克里特
 乐在克里特
发布于 2017/02/24 11:32
字数 919
阅读 8
收藏 0
点赞 0
评论 0

在Java中,获得ResultSet的总行数的方法有以下几种。 
第一种:利用ResultSet的getRow方法来获得ResultSet的总行数

 

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);   
ResultSet rset = stmt.executeQuery("select * from yourTableName");   
rset.last();   
int rowCount = rset.getRow(); //获得ResultSet的总行数

 

如上,rowCount的值,就是行数了。如果在获取了行数后,还需要继续使用当前数据集rs,则需要rs.beforeFirst()一次,将游标回到初始位置。

 

第二种:利用循环ResultSet的元素来获得ResultSet的总行数

 

ResultSet rset = stmt.executeQuery("select * from yourTableName");   
int rowCount = 0;   
while(rset.next()) {   
   rowCount++;   
}

 

 rowCount就是ResultSet的总行数。 

第三种:利用sql语句中的count函数获得ResultSet的总行数 

 

ResultSet rset = stmt.executeQuery("select count(*) totalCount from yourTableName");   
int rowCount = 0;   
if(rset.next()) {   
   rowCount=rset .getInt("totalCount ");   
}  

 

rowCount就是ResultSet的总行数。

 

——————Resultset获取列数————

Java中获得ResultSet的总列数是非常简单事情,因为Java中ResultSet提供了ResultSetMetaData工具类,ResultSetMetaData 是ResultSet的元数据的集合说明。

 

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); 
ResultSet rset = stmt.executeQuery("select * from yourtable"); 
ResultSetMetaData rsmd = rset.getMetaData() ; 
int columnCount = rsmd.getColumnCount();//ResultSet的总列数

 

 

其他说明:

ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。
ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表。 

此外,给出Statement创建时的其他说明:
通用格式为:Statement stmt=con.createStatement(int type,int concurrency);我们在访问数据库的时候,在读取返回结果的时候,可能要前后移动指针,比如我们先计算有多少条信息,这是我们就需要把指针移到最后来计算,然后再把指针移到最前面,逐条读取,有时我们只需要逐条读取就可以了。还有就是有只我们只需要读取数据,为了不破坏数据,我们可采用只读模式,有时我们需要望数据库里添加记录,这是我们就要采用可更新数据库的模式。
下面是所有参数的说明:

 

参数 int type
ResultSet.TYPE_FORWORD_ONLY 结果集的游标只能向下滚动。
ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。
ResultSet.TYPE_SCROLL_SENSITIVE 返回可滚动的结果集,当数据库变化时,当前结果集同步改变。

 

参数 int concurrency
ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表。
ResultSet.CONCUR_UPDATETABLE 能用结果集更新数据库中的表。
此外,当我们使用ResultSet re=stmt.executeQuery(SQL语句)查询后,我们可以使用下列方法获得信息:
public boolean previous() 将游标向上移动,该方法返回boolean型数据,当移到结果集第一行之前时,返回false。
public void beforeFirst 将游标移动到结果集的初始位置,即在第一行之前。
public void afterLast() 将游标移到结果集最后一行之后。
public void first() 将游标移到结果集的第一行。
public void last() 将游标移到结果集的最后一行。
public boolean isAfterLast() 判断游标是否在最后一行之后。
public boolean isBeforeFirst() 判断游标是否在第一行之前。
public boolean ifFirst() 判断游标是否指向结果集的第一行。
public boolean isLast() 判断游标是否指向结果集的最后一行。
public int getRow() 得到当前游标所指向行的行号,行号从1开始,如果结果集没有行,返回0。
public boolean absolute(int row) 将游标移到参数row指定的行号。如果row取负值,就是倒数的行数,absolute(-1)表示移到最后一行,absolute(-2)表示移到倒数第2行。当移动到第一行前面或最后一行的后面时,该方法返回false。

 

http://blog.sina.com.cn/s/blog_6a70b8b60100yz3d.html
 

© 著作权归作者所有

共有 人打赏支持
乐在克里特
粉丝 15
博文 265
码字总数 394729
作品 0
杭州
程序员
如何获取ResultSet的行数和列数

当我们执行数据库查询返回一个ResultSet的时候,很多情况下我们需要知道这个ResultSet的大小,即它的行数和列数。我们知道它的列数可以通过resultSet.getMetaData().getColumnCount()很容易地...

liangtee ⋅ 2012/11/01 ⋅ 1

java如何获取SQL查询结果集中的行数和列数

在Java中,获得ResultSet的总行数的方法有以下几种。 第一种:利用ResultSet的getRow方法来获得ResultSet的总行数 Statement stmt = con.createStatement(ResultSet.TYPESCROLLINSENSITIVE,R...

开源中国段子手 ⋅ 2016/05/04 ⋅ 0

JDBC--使用ResultSetMetaData 对象处理结果集元数据

可用于获取关于 ResultSet 对象中列的类型和属性信息的对象: getColumnName(int column):获取指定列的名称 getColumnCount():返回当前 ResultSet 对象中的列数。 getColumnTypeName(int ...

大道无名 ⋅ 2016/07/02 ⋅ 0

jpa获取jdbc连接问题

Connection connection = entityManager.unwrap(Connection.class); PreparedStatement ps = connection.prepareStatement(sql); ResultSet rs = ps.executeQuery(); ResultSetMetaData md =......

樱木花道VS康 ⋅ 2017/05/23 ⋅ 2

java读excel文件

首先在控制面板进行数据源ODBC登记 package duexcel; import java.io.; import java.sql.; public class duexcel { public static void main(String[] args) throws SQLException{ Connectio......

zhongdecai ⋅ 2014/05/04 ⋅ 0

java基础(jdbc上)

1.JDBC入门 a.介绍:使用java程序发送sql语句到数据库服务器端执行,这叫用到了JDBC技术。jdbc是Oracle- Sun 公司设计的一套专门用于java程序操作数据库的接口。 b.使用jdbc发送sql条件 连接...

给我妖刀 ⋅ 2017/06/08 ⋅ 0

jdbc 获取结果集行数、获取生成id、批量插入

获取结果集数量 *** 获取插入记录 id ***批量插入: ***参考: http://blog.csdn.net/u014726937/article/details/51741617 http://www.cnblogs.com/kahreman/archive/2012/08/06/2625827.ht......

jack_0110 ⋅ 2016/12/26 ⋅ 0

优化JDBC性能的一些基本原则

开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其...

hchen1982 ⋅ 2011/08/01 ⋅ 0

matlab中size函数用法

size(A)函数是用来求矩阵的大小的。 比如说一个A是一个3×4的二维矩阵: 1、size(A) %直接显示出A大小 输出:ans= 3 4 2、s=size(A)%返回一个行向量s,s的第一个元素是矩阵的行数,第二个...

月moon ⋅ 2017/05/03 ⋅ 0

POI操作Excel的个别事项

今天开发了个功能,需要导出某个专业下班级课表,其中星期是动态的,课节是动态的,班级是动态的,课表也是动态的,多方实验后采用了POI导出Excel。记录下几个注意事项,方便下次查找 1、单元...

lee_json ⋅ 2014/04/30 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

tcp/ip详解-链路层

简介 设计链路层的目的: 为IP模块发送和接收IP数据报 为ARP模块发送ARP请求和接收ARP应答 为RARP模块发送RARP请求和接收RARP应答 TCP/IP支持多种链路层协议,如以太网、令牌环往、FDDI、RS-...

loda0128 ⋅ 46分钟前 ⋅ 0

spring.net aop代码例子

https://www.cnblogs.com/haogj/archive/2011/10/12/2207916.html

whoisliang ⋅ 今天 ⋅ 0

发送短信如何限制1小时内最多发送11条短信

发送短信如何限制1小时内最多发送11条短信 场景: 发送短信属于付费业务,有时为了防止短信攻击,需要限制发送短信的频率,例如在1个小时之内最多发送11条短信. 如何实现呢? 思路有两个 截至到当...

黄威 ⋅ 昨天 ⋅ 0

mysql5.7系列修改root默认密码

操作系统为centos7 64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2、重启 mysqld 服务:systemctl restart mysql...

sskill ⋅ 昨天 ⋅ 0

Intellij IDEA神器常用技巧六-Debug详解

在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的...

Mkeeper ⋅ 昨天 ⋅ 0

zip压缩工具、tar打包、打包并压缩

zip 支持压缩目录 1.在/tmp/目录下创建目录(study_zip)及文件 root@yolks1 study_zip]# !treetree 11└── 2 └── 3 └── test_zip.txt2 directories, 1 file 2.yum...

蛋黄Yolks ⋅ 昨天 ⋅ 0

聊聊HystrixThreadPool

序 本文主要研究一下HystrixThreadPool HystrixThreadPool hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java /** * ThreadPool used to executed {@link Hys......

go4it ⋅ 昨天 ⋅ 0

容器之上传镜像到Docker hub

Docker hub在国内可以访问,首先要创建一个账号,这个后面会用到,我是用126邮箱注册的。 1. docker login List-1 Username不能使用你注册的邮箱,要用使用注册时用的username;要输入密码 ...

汉斯-冯-拉特 ⋅ 昨天 ⋅ 0

SpringBoot简单使用ehcache

1,SpringBoot版本 2.0.3.RELEASE ①,pom.xml <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELE......

暗中观察 ⋅ 昨天 ⋅ 0

Spring源码解析(八)——实例创建(下)

前言 来到实例创建的最后一节,前面已经将一个实例通过不同方式(工厂方法、构造器注入、默认构造器)给创建出来了,下面我们要对创建出来的实例进行一些“加工”处理。 源码解读 回顾下之前...

MarvelCode ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部