我试图抓住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是在程序中其他位置初始化的静态连接变量,指向正确的数据库并且它没有引起任何问题。
答案 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...
。
在执行查询之前运行它,您应该具有结果集的大小。