【问题标题】:Get the size of a ResultSet in Java for SQLite在 Java 中为 SQLite 获取 ResultSet 的大小
【发布时间】:2016-10-19 13:52:46
【问题描述】:

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

【问题讨论】:

    标签: java sqlite resultset


    【解决方案1】:

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

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

    【讨论】:

    • 我已经尝试过计数,但是当我将结果集分配给 int 时,它说结果集已关闭。
    • 我相信您的问题在于您对资源的尝试。 rs 将在它结束时关闭。删除 try with resources 并确保您始终使用 createStatement 而不是重复使用相同的 rs。
    • 实际上删除 try catch 块有帮助,它现在可以工作了。谢谢。
    【解决方案2】:

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

    从查询中删除分号

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

    然后

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

    代替

    count =rs.getInt(0);
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 返回的究竟是什么?一个整数?
      • @Jrawr 它将返回一个结果集,其中包含一个包含您的计数的字段。你可以做resultSet.getInt(0)...
      • 当我这样做时遇到了这个异常:
      • java.sql.SQLException: ResultSet 关闭
      猜你喜欢
      • 2013-11-18
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2023-03-17
      • 1970-01-01
      • 2012-01-07
      相关资源
      最近更新 更多