获取 Java 中 SQLite 的结果集大小

Get the size of a ResultSet in Java for SQLite

我正在尝试获取 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 是在程序其他地方初始化的静态连接变量,指向正确的数据库,它没有引起任何问题。

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

运行 在您进行查询之前,您应该知道结果集的大小。

您应该将结果映射到一个实体。创建这些实体的列表,然后简单地获取列表的大小。

如果您只需要尺寸和尺寸,则只需查询 return 原始查询结果的计数。

该列从索引 1 开始。 试试这个...

从查询中删除分号

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

然后

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

而不是

count =rs.getInt(0);