`
Aga
  • 浏览: 218598 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

解决ResultSet中无法获取行数的问题

阅读更多
昨天好友朱凌问了我一个问题,怎样从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数据库进行过调试,没有问题,其他数据库运行情况不详
分享到:
评论
17 楼 fastwind 2008-03-03  
这样不行  我做了一个实验  我现在的工程名字叫yh jsp也在yh下, yh在webapps下 webapps在tomcat下。 也就是说 /tomcat/webapps/yh/index.jsp 是这样的一个目录  现在我的js 代码 是放在了和tomcat文件夹同级 的一个文件夹下 
应该是../../../能到tomcat同级了吧 

16 楼 Aga 2008-03-03  
../../../some folder
15 楼 fastwind 2008-03-03  
我现在要在jsp页中引一个.js的文件,像下面这样
<script src="/aws_js/effect.js" type="text/javascript" ></script>


但是这个.js文件不在tomcat 下的webapps文件夹下,在这个jsp页的上一级的上一级的上一级的一个文件夹下面,这个src怎么写?
14 楼 Aga 2008-02-29  
http://news.yahoo.com/s/ap/20080227/ap_on_bi_ge/eu_microsoft;_ylt=AiEFxZc62_t27uXEVtmdt36s0NUE
13 楼 Aga 2008-02-28  
http://www.seomoz.org/ip2loc
12 楼 fastwind 2008-02-27  
这个破debug啊,我现在干脆直接run算了
反正不管怎么样,我这个树是做完了!
11 楼 Aga 2008-02-27  
debug就是一个很有趣的东西.
你可以把它当作一个监视线程来看.
10 楼 fastwind 2008-02-27  
现在已经没问题了,
不过要debug的话 可能就不行了!~~
9 楼 Aga 2008-02-27  
你把他们都关闭了再看看。
看看再有什么问题
8 楼 fastwind 2008-02-27  
对了   忘了这个问题了,要如果debug怎么办啊
7 楼 Aga 2008-02-27  
我明白了~
你是不是用的debug模式?
你的
rs
stmt
conn
都没有关闭!
6 楼 fastwind 2008-02-27  
我觉的很离奇的一个问题,第一次打印是第一行第一列,第二次打印是第二行第二列,第一三次打印是第三行第三列,第四次打印是第四行第四列
按道理来讲应该指针在执行一次rs.next()后 就应该不会再变了,而现在打印一次,指针往下走一次
5 楼 Aga 2008-02-27  
没遇到过,
我觉得你那么些是正确的。
要不今天晚上我帮你看看吧。
我这里没有数据库
4 楼 fastwind 2008-02-27  
0 -1 All          Y
1 0 Electronics Y
2 0 Books          Y
3 0 Home & Garden Y
4 1 Audio & Video Y
5 1 Camera & Photo Y
6 1 Computers          Y
7 1 Software          Y
8 2 Novels          Y
9 2 Entertainment Y
10 2 Cooking          Y
11 6 Desktops          Y
12 6 Laptops          Y


这个是我查询后数据库的结果
按我上面写的程序 打印的结果就是0    0    Books    Y
指针每次都发生了变化
3 楼 fastwind 2008-02-27  
我知道是rs.next()是移动一行啊
我现在就是想取一行的 4列的值
你加的那个是循环第一列的所有值

我现在移动到第一行,然后将他的4列全部打印,我用上面我写的就出问题了!
2 楼 Aga 2008-02-27  
while(rs.next()){
    rs.getString(1);
}

每rs.next()一次就是移动一行
rs.getXXX(index)是取该行第index个列。


你把行和列搞混了。

ps.你们那里还要人么?
1 楼 fastwind 2008-02-27  
String sql="select * from product_category where active_status='Y'";//一个查询语句
		try {
			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Connection con;
		try {
			con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=TreeView","sa","sa");
			Statement sta=con.createStatement();
			ResultSet rs=sta.executeQuery(sql);
			rs.next();			
			System.out.println(rs.getString(1));
			System.out.println(rs.getString(2));
			System.out.println(rs.getString(3));
			System.out.println(rs.getString(4));
			
		} catch (SQLException e) {
			e.printStackTrace();
		}

相关推荐

    Java ResultSet导出大数据.docx

    为了解决这个问题,POI从3.8.4版本开始引入了SXSSFWorkbook接口,允许设置在内存中保持的行数。当超过这个限制时,每新增一行,它会将较早的行写入磁盘,以减少内存压力。然而,这种方式频繁地写入磁盘可能会影响...

    Java ResultSet导出大数据.pdf

    此外,通过`setFetchSize(int rows)`可以限制每次从数据库获取的数据行数。 3. **Oracle与MySQL的区别**: - Oracle的JDBC驱动默认不会缓存所有数据,因此在Oracle中设置`setFetchSize`可能影响不大。 - MySQL则...

    利用JDBC解决大数据查询的问题

    通过对JDBC中`ResultSet`的管理和优化,我们可以有效地解决大数据查询所带来的性能问题。通过采用流式数据接收方式、启用服务器端游标以及合理设置`FetchSize`值等策略,可以显著提高大数据查询的效率,同时避免内存...

    如何避免JDBC引起的内存溢出情况

    可以通过设置`oracle.jdbc.fetchDirection=oracle.jdbc.OracleFetchDirection.FETCH_FORWARD`来控制游标的读取方向,并通过`oracle.jdbc.fetchSize`属性来指定每次获取的行数。 #### 三、通用的最佳实践 除了针对...

    酒店管理系统java源程序1.doc

    酒店管理系统Java源程序...该问题需要解决,以便每次数据库操作完成后都能关闭数据库连接。 该程序提供了连接数据库、执行更新和查询操作、获取记录数量、获取主键、初始化组件等功能,是一个功能完备的酒店管理系统。

    分页技术1

    这通常需要执行一个SQL查询,如`SELECT COUNT(*) AS total FROM table`,来获取表中的行数。然后根据每页显示的最大行数(MaxLine)来计算总页数(TPages)和当前页数(CPages)。 接着,构造实际的分页查询语句。...

    吉林大学数据库应用程序开发实验报告

    总结,这个实验报告涵盖了数据库应用程序开发的基础,包括JDBC连接、SQL查询执行、结果集处理、事务管理和错误处理,以及在实践中解决实际问题的技巧。通过这样的实验,学生能够深入理解数据库与Java应用程序之间的...

    jdbcTemplate分页彻底解决,使用游标滚动

    本篇文章将深入探讨如何利用JdbcTemplate结合游标滚动来解决分页问题。 首先,我们要理解什么是游标滚动。在数据库中,游标允许我们从结果集中顺序地读取一行数据,也可以向前或向后移动,甚至可以在当前行上进行...

    java学习文档5(word)

    Java是一种广泛使用的面向对象的编程语言,以其跨...通过深入阅读和实践"java学习文档5(word)"和"使用JDBC将SqlServer库导出到Mysql.doc",你可以进一步巩固Java数据库编程的知识,并增强实际项目中的问题解决能力。

    DocSys系统开发问题记录1

    #### 解决Qiao.bs.dialog无法第二次打开的问题 在使用`dialog.bs.dialog`组件时遇到的一个常见问题是无法第二次打开对话框。原因在于该组件加载了一个新的页面内容及JS内容到原页面,虽然对话框关闭时删除了页面...

    老罗 jdbc 源码

    通过对老罗JDBC源码的深入学习,开发者可以更好地理解和控制数据库操作,提升代码质量,优化数据库性能,并且能够有效地解决实际开发中遇到的问题。无论是初学者还是经验丰富的开发者,对JDBC源码的理解都是提升技术...

    jconn3.jar

    5. **处理结果**:如果SQL是查询,可以从`ResultSet`中获取数据;如果是DML操作,可以检查影响的行数。 6. **关闭资源**:在操作完成后,记得关闭`ResultSet`、`Statement`和`Connection`以释放系统资源。 此外,...

    JDBC编程!java中的数据库连接!源代码!适合初学者!

    总的来说,JDBC编程是Java程序员必须掌握的基础技能之一,它不仅可以帮助我们理解数据库操作的底层原理,还可以提高我们解决实际问题的能力。对于初学者来说,通过学习JDBC编程,可以加深对Java和数据库的理解,为...

    JDBC简单分页方案

    若将其存储在`HttpSession`中,虽然可以解决这一问题,但大量数据存储在Session中会影响性能,尤其是数据量大时。 因此,一个更优的方案是将页面公共属性和实际的数据库记录分离,创建两个独立的对象:一个用于存储...

    java数据库连接方法(一)

    为了解决这个问题,引入了数据库连接池的概念。数据库连接池预先创建并管理一定数量的数据库连接,当应用需要时,可以从池中获取连接,使用完毕后再归还,而不是真正关闭。这样可以显著提高性能,减少系统开销。 ...

    mysql-connector-java-5.1.35 MySQL的jdbc驱动jar

    MySQL的JDBC驱动,全称为Java Database Connectivity driver,是用于在Java程序中连接MySQL数据库的重要组件。`mysql-connector-java-...在使用过程中,如果遇到问题,可以查阅MySQL官方文档或社区论坛来获取解决方案。

    java(20211007021206).pdf

    在处理数据库结果集(ResultSet)时,`getRow()`方法可以获取当前指针所在行数,还有`isFirst()`, `isBeforeFirst()`, `isLast()`, `isAfterLast()`等方法来判断游标位置。 15. **防止表单后退显示过期页面**: ...

    Java 语言程序设计:第10章JDBC与数据库访问.ppt

    数据库管理系统(DBMS)的出现解决了这些问题,它以数据为中心,减少了冗余,提高了数据共享,并确保了程序与数据之间的独立性,使得数据结构的更改不会影响应用程序。 在数据模型方面,关系模型是最常见的一种,它...

    《老罗Android开发视频教程》服务器端JDBC编程(源码&PPT)

    - PPT讲解:可能涵盖了JDBC的工作原理、最佳实践、常见问题及解决方案,有助于理论与实践相结合。 通过《老罗Android开发视频教程》的学习,开发者不仅能掌握JDBC的基本用法,还能了解到如何在实际项目中安全高效地...

    MySQL_JDBC.docx

    JDBC接口的出现解决了这个问题,它提供了一套标准的API,使得Java程序只需使用JDBC就能操作任意支持JDBC的数据库,而具体的实现则由各个数据库厂商提供,极大地简化了开发过程。 2. **常用JDBC类和方法** - **...

Global site tag (gtag.js) - Google Analytics