获取SQLite的Java结果集大小

获取SQLite的Java结果集大小,java,sqlite,resultset,Java,Sqlite,Resultset,我正在尝试获取结果集的大小。现在因为我使用的是SQLite,并且SQLite只支持类型为_FORWARD _only的游标,所以我试图找出如何在不抛出错误的情况下获取它的大小。这行不通: int size = 0; rs.last(); size = rs.getRow(); 我也不能使用预先准备好的语句将光标更改为可滚动。有没有合适的尺码 我还尝试创建了一个while循环方法来处理这个问题,但它似乎仍然不起作用 public static int getResultSetSize(

我正在尝试获取结果集的大小。现在因为我使用的是SQLite,并且SQLite只支持类型为_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是在程序的其他地方初始化的静态连接变量,它指向正确的数据库,并且没有引起任何问题

对同一查询的数据库进行计数…
选择计数(*)您的查询…


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

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


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

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

从查询中删除分号

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

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

count =rs.getInt(0);

那到底是什么?int?@Jrawr它将返回一个结果集,其中包含一个包含您的计数的字段。您可以执行
resultSet.getInt(0)
…执行此操作时,我会遇到此异常:java.sql.SQLException:resultSet closed我尝试过计数,但当我将结果集分配给int时,它会说结果集已关闭。我相信您的问题在于尝试使用资源。比赛结束后,rs就要关门了。删除try with resources并确保始终使用createStatement,而不是重用相同的rs。实际上,删除try-catch块很有帮助,现在就可以工作了。非常感谢。