获取结果集值的计数[重复]

Posted

技术标签:

【中文标题】获取结果集值的计数[重复]【英文标题】:Getting the count of the resultset values [duplicate] 【发布时间】:2014-10-17 17:44:19 【问题描述】:

我需要你的助手帮助我计算resultset 中可用值的数量。 resultset 有 22 条记录,在下面的代码中,它打印从 1 到 23 的计数。有什么方法可以得到总数。记录为 22(仅一个值)还是从第一个值中减去最后一个值?

我的代码如下:

while (rs.next())
        

        count=0;
        name1=rs.getString("name");  
                    out.println(rs.getRow());

                 

我尝试使用rs.first()rs.last() 并产生以下错误:

java.sql.SQLException:仅转发结果集的操作无效: 首先

我尝试将参数添加到createstatement,但存在相同的异常:

 conn.createStatement(rs.TYPE_SCROLL_INSENSITIVE, rs.CONCUR_READ_ONLY);

java.sql.SQLException:仅转发结果集的操作无效: 最后

请帮助我解决上述问题。

【问题讨论】:

已经有一个功能了。 rs.getRow()。我不确定,但类似。 这有帮助吗? ***.com/questions/7886462/… 【参考方案1】:

你可以使用 mysqlcount(*)

  try
      Statement stmt = connection.createStatement();
      String selectquery = "select count(*) from YourTable";
      ResultSet rs = stmt.executeQuery(selectquery);
      rs.next();          
      System.out.println("Amount of rows :" + rs.getInt(1));
    

如果您想根据“名称”计算行数,那么

try
          Statement stmt = connection.createStatement();
          String selectquery = "select count(name) from YourTable";
          ResultSet rs = stmt.executeQuery(selectquery);
          rs.next();          
          System.out.println("Amount of rows :" + rs.getInt(1));
        

【讨论】:

我试图不更改查询,因为它是一个包含 10 多个字段的复杂查询 在我的解决方案中,您不必使用while (rs.next()) .. ,这甚至并不复杂。 问题是我使用的是动态查询,它应该根据名称显示计数。这无济于事 @user3407440,参见上面的编辑。【参考方案2】:

试试这个:

int rowcount = 0;
if (rs.last()) 
  rowcount = rs.getRow();
  rs.beforeFirst(); 

编辑:

您需要像这样更改查询语句,以便可以使用rs.last()

Statement stmt = con.createStatement(rs.TYPE_SCROLL_INSENSITIVE);
ResultSet rs = stmt.executeQuery("Your query");

查看Oracle Docs

【讨论】:

为什么不使用 resultSet.getRow()? @Nabin:- 那是我用的 ;) 它没有解决问题,我得到了这个错误:java.sql.SQLException: Invalid operation for forward only resultset : last @user3407440:- ResultSet.last() 和其他“绝对索引”查询操作仅在结果集可滚动时可用。您需要像这样更改查询语句:Statement stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE ); @user3407440 createStatement 调用至少需要两个参数,参见 documentation conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet. ResultSet.CONCUR_READ_ONLY);

以上是关于获取结果集值的计数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将结果集值传递给另一个类

获得所需的结果集值,该值可能需要数小时才能显示在表格中

Chart.js 从图例中删除数据集值的标签

填充有记录集值的单元格中添加的空格

获取 dapper.QueryMultiple 方法返回的结果集计数

有没有办法获取带有结果集的 JPA 命名查询的计数大小?