当前位置: 首页 > 面试题库 >

如何在Java中使用ResultSet获取行数?

鞠泰平
2023-03-14
问题内容

我正在尝试创建一个简单的方法,该方法将ResultSet作为参数接收并返回一个包含ResultSet的行数的int。这是执行此操作的有效方法吗?

int size = 0;
    try {
        while(rs.next()){
            size++;
        }
    }
    catch(Exception ex) {
        System.out.println("------------------Tablerize.getRowCount-----------------");
        System.out.println("Cannot get resultSet row count: " + ex);
        System.out.println("--------------------------------------------------------");
    }

我尝试了这个:

int size = 0;
try {
    resultSet.last();
    size = resultSet.getRow();
    resultSet.beforeFirst();
}
catch(Exception ex) {
    return 0;
}
return size;

但我说错了 com.microsoft.sqlserver.jdbc.SQLServerException: The requested operation is not supported on forward only result sets.

在此先感谢您的指点!


问题答案:

如果您有权访问导致该结果集的准备好的语句,则可以使用

connection.prepareStatement(sql, 
  ResultSet.TYPE_SCROLL_INSENSITIVE, 
  ResultSet.CONCUR_READ_ONLY);

这样可以以回退光标的方式准备语句。这也记录在ResultSet
Javadoc中

但是,通常,对于大型结果集,前进和后退游标可能效率很低。SQL Server中的另一种选择是直接在您的SQL语句中计算总行数:

SELECT my_table.*, count(*) over () total_rows
FROM my_table
WHERE ...


 类似资料:
  • 问题内容: 数据库具有UTC中的数据,当我尝试获取数据时 这有什么问题吗? 问题答案: 您的DateFormat实例很可能以本地时间显示该值。在显示您的价值时,尝试一下: 编辑:对您的评论: 如果我使用GMT,那在SimpleDateFormat中会是一个问题吗? SimpleDateFormat可以使用常规时区(GMT +/- n),RFC822和文本(如JavaDoc所述,“如果它们具有名称”

  • 问题内容: 我想将sql:query换成一些Java代码,该代码用几个参数构建一个复杂的查询。当前的sql是一个简单的选择。 如何获取我的Java ResultSet(即rs = stmt.executeQuery(sql);)并使结果可在我的JSP中使用,以便可以使用此教科书JSP? 更清楚地说,我想删除上面的查询并将其替换为Java。 我应该在Java部分中设置session / page变量

  • 问题内容: 我已经使用过返回一定数量的行。我的代码是这样的: 有没有什么方法可以检查返回的行数?还是我必须自己写? 问题答案: 您可以使用循环而不是循环,以便在执行循环后调用该循环,如下所示: 或自己计算行数:

  • 问题内容: 默认情况下,MySQL ResultSets会从服务器上完全检索,然后才能完成任何工作。在巨大的结果集的情况下,这变得不可用。我实际上想从服务器一个接一个地检索行。 在Java中,按照此处的说明(在“ ResultSet”下),我创建如下语句: 这在Java中效果很好。我的问题是:有没有办法在python中做同样的事情? 我尝试做的一件事是将查询一次限制为1000行,如下所示: 但是,

  • 问题内容: 我从ResultSet获取Date对象时遇到问题。在数据库中,它具有一个值(例如2014-08-01),并且从resultSet获取它之后,它具有另一个值(2014-08-31)。我知道ResultSet的getDate方法返回java.sql.Date,但是我尝试了一些解决方案,例如: 或 但问题是相同的。如果尝试 ,则抛出NullPointerException。 有人可以解释吗?

  • 问题内容: 我不能在数据库中执行ORDER BY 问题答案: 将数据从ResultSet中移到所需的任何对象表示形式中,然后对数据进行排序,就像此时的其他任何数据一样。 如果您使用Collections.Sort对复杂对象进行排序,则需要实现Comparator。