获取SQLite的Java结果集大小
我正在尝试获取结果集的大小。现在因为我使用的是SQLite,并且SQLite只支持类型为_FORWARD _only的游标,所以我试图找出如何在不抛出错误的情况下获取它的大小。这行不通:获取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(
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块很有帮助,现在就可以工作了。非常感谢。