使用SELECT COUNT(*)获取ResultSet的大小

时间:2016-03-28 16:16:27

标签: java ms-access count

我想从数据库中检索所有数据,同时,我想知道我获得了多少行数据。这是我的SQL:

rs = s.executeQuery("SELECT COUNT(*), * FROM tblUser");

这是一个有效的SQL语句吗?在我检索完所有数据之后,如何将它们设置为不同的变量?例如,我在数据库中有一个名为UserID的列,我可以使用rs.getString('UserID')来获取它,但是如何获取COUNT(*)的结果?

5 个答案:

答案 0 :(得分:6)

您的SQL 有效。执行所需操作的ANSI标准方法使用窗口函数:

select count(*) over () as total_cnt,
       u.*
from tblUser u;

这会为每一行添加一个新列 - 这似乎就是你想要的。还有其他机制,具体取决于执行此操作的基础数据库。

答案 1 :(得分:0)

如果您的RDBMS不支持窗口函数,则可以选择

rs = s.executeQuery("SELECT B.cnt, U.* 
                     FROM tblUser U, 
                     (SELECT count(*) cnt FROM tblUser) B");

答案 2 :(得分:0)

您请求的结果不是相互关联的,因此请运行两个查询:

rs1 = s.executeQuery("SELECT COUNT(*) FROM tblUser");
rs2 = s.executeQuery("SELECT * FROM tblUser");

并以通常的方式检索值(仅适用于rs1)。

答案 3 :(得分:0)

您可以这样做来计算resultset中的行数

String query = "Select * from tblUser";
rs = s.executeQuery(query);

 public int getCount(ResultSet rs) {
  int rows = 0;
  while(rs.next()) {
     i++;
  }
  return i;
}

通过这种方式,您可以获得结果集以及计数

答案 4 :(得分:0)

由于您已经在VBA中访问记录集,因此最简单的方法是将记录集的计数返回到:

rs = s.executeQuery("SELECT * FROM tblUser");
If Not rs.EOF Then
    ' Important: You must move to the last record to 
    ' obtain the count of the full recordset
    rs.MoveLast
    rsCount = rs.RecordCount
    ' Remember to Return to the First Record so that you can 
    ' continue to use the recordset
    rs.MoveFirst
End If