昨天好友朱凌问了我一个问题,怎样从ResultSet中读取行数?
我google了一下,发现目前最常用的做法如下:
Connection conn = DriverManager.getConnection("...");
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = conn.prepareStatement("select ...").executeQuery();
rs.last();
rs.getRow();
但是我利用家里的环境试了一下,却发现不好用。仔细考虑一下:发现这个方法并不是很巧妙,因为在rs.last()之后还是需要把游标滚到开头。效率不是很高。
另外一种方式就是先
select count(*) from ...
然后再
select ...
这样的问题是需要2次stmt,可能效率会受到影响。早晨,我想起了另外一种更为巧妙的解决方法,如下:
先建表:
create table try(
try_id integer,
try_name varchar2(10)
);
然后随便向里面填几行输入。
然后再sqlplus中输入如下内容:
select count(*), 'head' from try
union all
select try_id, try_name from try
利用一个union操作把两个查询进行一个并操作。
完毕。
另外:以上操作,我再mysql和oracle数据库进行过调试,没有问题,其他数据库运行情况不详
分享到:
相关推荐
为了解决这个问题,POI从3.8.4版本开始引入了SXSSFWorkbook接口,允许设置在内存中保持的行数。当超过这个限制时,每新增一行,它会将较早的行写入磁盘,以减少内存压力。然而,这种方式频繁地写入磁盘可能会影响...
此外,通过`setFetchSize(int rows)`可以限制每次从数据库获取的数据行数。 3. **Oracle与MySQL的区别**: - Oracle的JDBC驱动默认不会缓存所有数据,因此在Oracle中设置`setFetchSize`可能影响不大。 - MySQL则...
通过对JDBC中`ResultSet`的管理和优化,我们可以有效地解决大数据查询所带来的性能问题。通过采用流式数据接收方式、启用服务器端游标以及合理设置`FetchSize`值等策略,可以显著提高大数据查询的效率,同时避免内存...
可以通过设置`oracle.jdbc.fetchDirection=oracle.jdbc.OracleFetchDirection.FETCH_FORWARD`来控制游标的读取方向,并通过`oracle.jdbc.fetchSize`属性来指定每次获取的行数。 #### 三、通用的最佳实践 除了针对...
酒店管理系统Java源程序...该问题需要解决,以便每次数据库操作完成后都能关闭数据库连接。 该程序提供了连接数据库、执行更新和查询操作、获取记录数量、获取主键、初始化组件等功能,是一个功能完备的酒店管理系统。
这通常需要执行一个SQL查询,如`SELECT COUNT(*) AS total FROM table`,来获取表中的行数。然后根据每页显示的最大行数(MaxLine)来计算总页数(TPages)和当前页数(CPages)。 接着,构造实际的分页查询语句。...
总结,这个实验报告涵盖了数据库应用程序开发的基础,包括JDBC连接、SQL查询执行、结果集处理、事务管理和错误处理,以及在实践中解决实际问题的技巧。通过这样的实验,学生能够深入理解数据库与Java应用程序之间的...
本篇文章将深入探讨如何利用JdbcTemplate结合游标滚动来解决分页问题。 首先,我们要理解什么是游标滚动。在数据库中,游标允许我们从结果集中顺序地读取一行数据,也可以向前或向后移动,甚至可以在当前行上进行...
Java是一种广泛使用的面向对象的编程语言,以其跨...通过深入阅读和实践"java学习文档5(word)"和"使用JDBC将SqlServer库导出到Mysql.doc",你可以进一步巩固Java数据库编程的知识,并增强实际项目中的问题解决能力。
#### 解决Qiao.bs.dialog无法第二次打开的问题 在使用`dialog.bs.dialog`组件时遇到的一个常见问题是无法第二次打开对话框。原因在于该组件加载了一个新的页面内容及JS内容到原页面,虽然对话框关闭时删除了页面...
通过对老罗JDBC源码的深入学习,开发者可以更好地理解和控制数据库操作,提升代码质量,优化数据库性能,并且能够有效地解决实际开发中遇到的问题。无论是初学者还是经验丰富的开发者,对JDBC源码的理解都是提升技术...
5. **处理结果**:如果SQL是查询,可以从`ResultSet`中获取数据;如果是DML操作,可以检查影响的行数。 6. **关闭资源**:在操作完成后,记得关闭`ResultSet`、`Statement`和`Connection`以释放系统资源。 此外,...
总的来说,JDBC编程是Java程序员必须掌握的基础技能之一,它不仅可以帮助我们理解数据库操作的底层原理,还可以提高我们解决实际问题的能力。对于初学者来说,通过学习JDBC编程,可以加深对Java和数据库的理解,为...
若将其存储在`HttpSession`中,虽然可以解决这一问题,但大量数据存储在Session中会影响性能,尤其是数据量大时。 因此,一个更优的方案是将页面公共属性和实际的数据库记录分离,创建两个独立的对象:一个用于存储...
为了解决这个问题,引入了数据库连接池的概念。数据库连接池预先创建并管理一定数量的数据库连接,当应用需要时,可以从池中获取连接,使用完毕后再归还,而不是真正关闭。这样可以显著提高性能,减少系统开销。 ...
MySQL的JDBC驱动,全称为Java Database Connectivity driver,是用于在Java程序中连接MySQL数据库的重要组件。`mysql-connector-java-...在使用过程中,如果遇到问题,可以查阅MySQL官方文档或社区论坛来获取解决方案。
在处理数据库结果集(ResultSet)时,`getRow()`方法可以获取当前指针所在行数,还有`isFirst()`, `isBeforeFirst()`, `isLast()`, `isAfterLast()`等方法来判断游标位置。 15. **防止表单后退显示过期页面**: ...
数据库管理系统(DBMS)的出现解决了这些问题,它以数据为中心,减少了冗余,提高了数据共享,并确保了程序与数据之间的独立性,使得数据结构的更改不会影响应用程序。 在数据模型方面,关系模型是最常见的一种,它...
- PPT讲解:可能涵盖了JDBC的工作原理、最佳实践、常见问题及解决方案,有助于理论与实践相结合。 通过《老罗Android开发视频教程》的学习,开发者不仅能掌握JDBC的基本用法,还能了解到如何在实际项目中安全高效地...
JDBC接口的出现解决了这个问题,它提供了一套标准的API,使得Java程序只需使用JDBC就能操作任意支持JDBC的数据库,而具体的实现则由各个数据库厂商提供,极大地简化了开发过程。 2. **常用JDBC类和方法** - **...