java中如何获取结果集ResutSet的总条数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何获取结果集ResutSet的总条数?相关的知识,希望对你有一定的参考价值。

如果不用以下方式ResultSet rs.last(); int tiaoshu=rs.getRow();那么有其它的方法吗?

java中获取结果集ResutSet的总条数,可以直接使用其提供的getRow方法来取得,实例如下:

PreparedStatement pstate = null;//声明一个PreparedStatement类
String sql = "SELECT * FROM CHE_GOOD WHERE TITLE LIKE ?";//从数据库中查询
pstate = con.prepareStatement(sql,
java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
java.sql.ResultSet.CONCUR_READ_ONLY);
pstate.setString(1, "%" +greatwqs+ "%");

ResultSet result = pstate.executeQuery();//声明一个结果集类
result.last();
int rowcount = result.getRow();//获得总条数
参考技术A 既然你已经有方法了,就用那个,JDBC 规范并没有强制驱动程序在迭代游标时必须保持稳定,换句话说,我自己实现的数据库完全可以给你一行然后忘记它,也可以你要一行我看还有时就返回数据,你不问我时我根本就不去检查还有多少行。你看完全最后一行之后还想知道第一行,我完全可以抛出一个状态异常告诉你这功能不支持.
之所以这么约定,那是因为基于性能上的考虑,很多时候我们不应该提前知道那些,因为它会导致数据库提供分配临时空间给这些数据,比如我们开发时在 SQL 工具中写一条 SQL 看有什么数据,但忘记了加条件,结果千万条数据 loading,内存用光了,电脑反应慢,这就是错误的设计,因为这个数据库客户端工具在并非必要地情况下尝试加载所有数据导致性能问题,在客户端加载数据的同时,数据库本身也需要分配临时空间给数据。
因为想知道有多少行本身就不是必须提供的功能。文档中提到了一句话:
@exception SQLFeatureNotSupportedException if the JDBC driver does not support this method
意思是说这个功能是可选的,数据库或它的驱动可以不提供。
一个简单的办法就是取数据前可以 select count(*) 一下。
参考技术B 没有别的方法,你这方法是ResultSet获取数据条数的最直接方法,获取之后一般用first()方法将指针移至第一行。

其实如果没用到org的一些包对ResultSet进行封装的话,可以自己写个类对其进行封装,因为ResultSet是要基于Connection存在的,连接一关,ResultSet就废了,用起来还是不太方便
参考技术C select count(*) from (你的查询语句)本回答被提问者采纳 参考技术D select count(*) from 表名;
返回的就是你这个表中数据的条数

Sql Server中查询数据库所有表及其数据总条数和占用空间

1、查询某数据库中的所有数据表

SELECT name 数据表
FROM sysobjects
WHERE xtype=\'u\'
ORDER BY name


2、查询某数据库中的所有数据表及其数据总条数

SELECT a.name 数据表,
b.rows 数据总条数
FROM sysobjects AS a
INNER JOIN sysindexes AS b ON a.id = b.id
WHERE ( a.type = \'u\' )
AND ( b.indid IN ( 0, 1 ) )
ORDER BY a.name,b.rows DESC;


3、查询某数据库中的所有数据表及其数据总条数所占用的空间大小

SELECT OBJECT_NAME(id) 数据表,
RTRIM(8 * dpages) + \'KB\' 占用空间大小,
rows 数据总条数
FROM sysindexes
WHERE indid = 1
ORDER BY rows DESC ,
数据表 ,
reserved DESC;


4、查询数据库文件路径信息

select * from sys.database_files


5、查询数据库文件大小

--当前数据库服务器所有数据库文件大小
SELECT DB_NAME(database_id) AS DatabaseName,
Name AS Logical_Name,
Physical_Name, (size*8.0)/1024 SizeMB
FROM sys.master_files
GO

--查看某一个数据库的文件大小
SELECT DB_NAME(database_id) AS DatabaseName,
Name AS Logical_Name,
Physical_Name, (size*8.0)/1024 SizeMB
FROM sys.master_files
WHERE DB_NAME(database_id) = \'database数据库名\'
GO

以上是关于java中如何获取结果集ResutSet的总条数?的主要内容,如果未能解决你的问题,请参考以下文章

高速查询hive数据仓库表中的总条数

mysql Count 查询记录总条数,效率很慢

sql语句分页查询,如何同时返回记录总条数

mysql Count 查询记录总条数,效率很慢

怎么在oracle数据库中想统计一个用户下所有表的记录的总条数?

怎么在oracle数据库中想统计一个用户下所有表的记录的总条数?