如何获取ResultSet的行数和列数 - balabala已被注册 - 博客园
随笔 - 30, 文章 - 0, 评论 - 95, 引用 - 0
当我们执行数据库查询返回一个ResultSet的时候,很多情况下我们需要知道这个ResultSet的大小,即它的行数和列数。我们知道它的列数可以通过resultSet.getMetaData().getColumnCount()很容易地得到,然而,java API没有提供直接访问ResultSet行数的接口。
这个时候,有三个办法可以解决:
1.改用select count语句,然后直接从ResultSet里面获取结果:
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;
while(resultSet.next()){
count = count + 1;
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
这样获取的count值就是结果集的行数。然而,这种方法同第一种方法的问题一样,不能再使用结果集了。因为这时候指针已经移动到结果集的外面了,不再指向任何记录。
3.知道了第二种方法中问题的原因,我们就知道如何更好地解决这个问题了。第二种方法的问题在于返回的结果集中的指针不能自由移动,幸好java为我们提供了选择,可以让我们创建指针可以自由移动的结果集,所需要做的只有一件事,就是在创建Statement的时候,加上两个参数:
//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;
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()方法就知道了。django如何返回query之后的结果?_百度知道query有关问题,大侠帮帮忙啦, - Delphi当前位置:& &&&query有关问题,大侠帮帮忙啦,query有关问题,大侠帮帮忙啦,&&网友分享于:&&浏览:1次query问题,大侠帮帮忙啦,在线等。。。。query2.C & query2.SQL.C & query2.SQL.Add('select * from 职员表'); & query2.O这是form3的刷新的代码,我用的是DBGrid。为什么每次按刷新按钮,窗口就消失了???我另一个选项卡用的是Table.refresh,也是这种情况,为什么呢???注:form3是我的在主界面点击toolbutton弹出来的(用form3.)。------解决方案--------------------是不是数据库连不上?
------解决方案--------------------..
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有lucene中普通的Query和TermQuery有什么区别?查询结果不都是根据索引的字段得到要查询内容的集合么?_百度知道LoadQuery 经常我们需要根据一批输入数据,然后从 库查询得到结果或者直接做简 变换 ADO-ODBC 库编程 238万源代码下载-
&文件名称: LoadQuery
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 74 KB
&&上传时间:
&&下载次数: 2
&&提 供 者:
&详细说明:经常我们需要根据一批输入数据,然后从数据库查询得到结果或者直接做简单的变换得到结果,比如要从数据库查询出10000个号码的用户名,需要导入数据,然后执行查询,最后导出,用此程序可以一键搞定。-A small program to query data
according to a lot of data input.
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&LoadQuery\DataBase.cpp&&.........\DataBase.h&&.........\Encrpt.cpp&&.........\LoadQuery.aps&&.........\LoadQuery.clw&&.........\LoadQuery.cpp&&.........\LoadQuery.dsp&&.........\LoadQuery.dsw&&.........\LoadQuery.h&&.........\LoadQuery.ini&&.........\LoadQuery.ncb&&.........\LoadQuery.opt&&.........\LoadQuery.plg&&.........\LoadQuery.rc&&.........\LoadQueryDlg.cpp&&.........\LoadQueryDlg.h&&.........\LoadQuery_options.txt&&.........\mssccprj.scc&&.........\ParmFile.cpp&&.........\ParmFile.h&&.........\ReadMe.txt&&.........\res\LoadQuery.ico&&.........\...\LoadQuery.rc2&&.........\...\vssver2.scc&&.........\resource.h&&.........\StdAfx.cpp&&.........\StdAfx.h&&.........\vssver.scc&&.........\vssver2.scc&&.........\WiseComboBox.cpp&&.........\WiseComboBox.h&&.........\res&&LoadQuery
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 精灵程序接受服务器端命令,获取本机线程、内存等PDH数据,还可以查询本机的数据库数据,并发送给服务器端,供服务端监控各个客户端状况
&[] - web程序设计中数据访问这一块内容,带数据库了,两个实验都在,学习用的。