在Java中,获得ResultSet的总行数的方法有以下几种。
第一种:利用ResultSet的getRow方法来获得ResultSet的总行数
Java代码
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的总行数
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的总行数第二种:利用循环ResultSet的元素来获得ResultSet的总行数
Java代码
ResultSet rset = stmt.executeQuery(”select * from yourTableName”)
int rowCount = 0
while(rset.next()) {
rowCount++
}
ResultSet rset = stmt.executeQuery(”select * from yourTableName”)int rowCount = 0while(rset.next()) { rowCount++}rowCount就是ResultSet的总行数。
第三种:利用sql语句中的count函数获得ResultSet的总行数
Java代码
ResultSet rset = stmt.executeQuery(”select count(*) totalCount from yourTableName”)
int rowCount = 0
if(rset.next()) {
rowCount=rset .getInt(”totalCount ”)
}
ResultSet rset = stmt.executeQuery(”select count(*) totalCount from yourTableName”)int rowCount = 0if(rset.next()) { rowCount=rset .getInt(”totalCount ”)}rowCount就是ResultSet的总行数。
• Java中获得ResultSet的总列数是非常简单事情,因为Java中ResultSet提供了ResultSetMetaData工具类,ResultSetMetaData 是ResultSet的元数据的集合说明。
java获得ResultSet总列数的代码如下:
Java代码
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()
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()columnCount 就是ResultSet的总列数。
如何获取ResultSet的行数和列数
结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等。
ResultSet是一个结果集,怎么获得里面的数据
当我们执行数据库查询返回一个ResultSet的时候,很多情况下我们需要知道这个ResultSet的大小,即它的行数和列数。我们知道它的列数可以通过resultSet.getMetaData().getColumnCount()很容易地得到,然而,java API没有提供直接访问ResultSet行数的接口。
这个时候,有三个办法可以解决:
1.改用select count语句,然后直接从ResultSet里面获取结果:try{Statement statement = connection.createStatement()
ResultSet resultSet = statement.executeQuery(”select count(*) as rowCount from tableName”)
resultSet.next()introwCount = resultSet.getInt(”rowCount”)}catch(Exception e) {//TODO: handle exception
e.printStackTrace()}但是,我们执行数据库查询不光要知道结果的行数,往往接下来还要用到查询结果。如果用此方法,还需要再执行一次select语句,才能得到想要的结果集,这样,就多了一次数据库查询,大大降低了执行速度。
2.遍历Resultset,用一个变量记录行数。代码如下:intcount = 0try{while(resultSet.next()){
count = count + 1}}catch(SQLException e1) {//TODO Auto-generated catch block
e1.printStackTrace()}这样获取的count值就是结果集的行数。然而,这种方法同第一种方法的问题一样,不能再使用结果集了。因为这时候指针已经移动到结果集的外面了,不再指向任何记录。
3.知道了第二种方法中问题的原因,我们就知道如何更好地解决这个问题了。第二种方法的问题在于返回的结果集中的指针不能自由移动,幸好java为我们提供了选择,可以让我们创建指针可以自由移动的结果集,所需要做的只有一件事,就是在创建Statement的时候,加上两个参数:try{//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()}这样获得的结果集,指针就可以在其中自由移动。然后,就可以用如下方法获取结果集的行数:introwCount = 0try{resultSet.last()
rowCount = resultSet.getRow()}catch(Exception e) {//TODO: handle exception
e.printStackTrace()}其中resultSet.last()就是将指针移动到结果集的最后一条记录;然后用resultSet.getRow()获取指针当前所在的行号(从1开始)
如果接下来你还要使用结果集,别忘了将指针移到第一行:
resultSet.first()
既然结果集是可滚动的,当然可以用absolute()方法访问指定行号的记录:
其中row参数可正可负,具体含义查一下ResultSet的absolute()方法就知道了。
只有一个参数的话,百if(rs.next())先判断一下,然后就看你存放的是什么类型的数据了,那个src是String类型的还是URL类型的?rs.getString(1)或者rs.getURL(1)来得到该数据的引用。在ResultSet中取数据之前都要使用rs.next()方法,一个数据的话就是if(rs.next())多个数据的话就是while(rs.next())。每次读出数据后结果集的游标自动下移。鉴于你所说只有一个参数,那么列的度索引就应该是一。
以上就是关于ResultSet怎么用全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!