获取Javaite中的ResultSet的大小

时间:2016-10-19 13:52:46

标签: java sqlite resultset

我试图抓住ResultSet的大小。现在因为我使用的是SQLite,而SQLite只支持TYPE_FORWARD_ONLY游标,我试图弄清楚如何在不抛出错误的情况下抓住它的大小。这不会起作用:

int size = 0;    
rs.last();
size = rs.getRow();

我也不能使用预准备语句将光标更改为可滚动。反正是否有尺寸?

我还尝试创建一个while循环方法来处理这个问题,但它似乎仍然无法正常工作

 public static int getResultSetSize(ResultSet rs) throws SQLException{
     int size = 0;

     while(rs.next()){
         size++;
     }

     return size;
 }

任何帮助将不胜感激。

编辑:

我已经尝试了以下但没有成功

ResultSet rs = DBHelpers.getResultSet("SELECT COUNT(*) FROM USERS;");
    int count = 0;

    try {
        count =rs.getInt(0) ;
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

辅助方法如下:

 public static ResultSet getResultSet(String sql){
     ResultSet rs = null;;
        try (Statement stmt  = conn.createStatement()){
              rs = stmt.executeQuery(sql);
        } catch (SQLException e) {
            System.out.println(e.getMessage());
            return null;
        }
        return rs;
    }

Conn是在程序中其他位置初始化的静态连接变量,指向正确的数据库并且它没有引起任何问题。

3 个答案:

答案 0 :(得分:1)

您应该将结果映射到实体。创建这些实体的列表,然后只需获取列表的大小。

如果只想要大小和大小,只需进行查询即可返回原始查询结果的计数。

答案 1 :(得分:1)

该列以索引1开头。 试试这个......

从查询中删除分号

ResultSet rs = DBHelpers.getResultSet("SELECT COUNT(*) FROM USERS");

然后

while (rs.next()) {
            System.out.println(rs.getInt(1));
        }

而不是

count =rs.getInt(0);

答案 2 :(得分:0)

对同一查询的数据库进行统计... SELECT Count(*) your query...

在执行查询之前运行它,您应该具有结果集的大小。