Java 使用SELECT COUNT(*)获取结果集的大小

Java 使用SELECT COUNT(*)获取结果集的大小,java,ms-access,count,Java,Ms Access,Count,我想从数据库中检索所有数据,同时,我想知道我得到了多少行数据。这是我的SQL: 这是有效的SQL语句吗?在我检索了所有数据之后,如何将它们设置为不同的变量?例如,我在数据库中有一个名为UserID的列,我可以通过使用rs.getString'UserID'简单地获得它,但是如何获得计数的结果* 您的SQL无效。ANSI标准方法使用窗口函数来执行您想要的操作: select count(*) over () as total_cnt, u.* from tblUser u; 这会在

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

这是有效的SQL语句吗?在我检索了所有数据之后,如何将它们设置为不同的变量?例如,我在数据库中有一个名为UserID的列,我可以通过使用rs.getString'UserID'简单地获得它,但是如何获得计数的结果*

您的SQL无效。ANSI标准方法使用窗口函数来执行您想要的操作:

select count(*) over () as total_cnt,
       u.*
from tblUser u;
这会在每一行中添加一个新列,这似乎是您想要的。根据执行此操作的基础数据库,还有其他机制。

您的SQL无效。ANSI标准方法使用窗口函数来执行您想要的操作:

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

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

如果您的RDBMS不支持窗口功能,则可以选择此机制

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

如果您的RDBMS不支持窗口功能,则可以选择此选项

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

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

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

并以通常的方式仅为rs1检索一个值。

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

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

并以通常的方式仅为rs1检索一个值。

您可以这样做来计算结果集中的行数

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

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

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

您可以这样做来计数结果集中的行

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

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

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

,因为您已经在访问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

由于您已经在访问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

你用的是什么数据库?我认为那不是有效的SQL。通常情况下,计数必须单独进行。Count将只返回1条记录。执行常规选择并从结果集中获取行计数。如果您认为需要知道,您做错了。创建对象列表,绑定与行关联的对象,然后添加到列表中。关闭结果集并返回列表。列表的大小告诉您返回了多少行。您使用的是什么数据库?我认为这不是有效的SQL。通常情况下,计数必须单独进行。Count将只返回1条记录。执行常规选择并从结果集中获取行计数。如果您认为需要知道,您做错了。创建对象列表,绑定与行关联的对象,然后添加到列表中。关闭结果集并返回列表。列表的大小告诉您返回了多少行。那个“u”是什么意思?它叫什么?如何从“rs”中获取数据?u是tblUser的别名。它允许更短的SQL语句。u、 *与tblUser相同。*。您可以通过rs.getInt1或rs.getInttotal\u cnt获取数据,该“u”代表什么?它叫什么?如何从“rs”中获取数据?u是tblUser的别名。它允许更短的SQL语句。u、 *与tblUser相同。*。您可以通过rs.getInt1或rs.getInttotal\u cnt获取数据