在Java中获取ResultSet返回的行数

77

我使用了一个返回固定行数的ResultSet。我的代码大概是这样的:

ResultSet res = getData();
if(!res.next())
{
    System.out.println("No Data Found");
}
while(res.next())
{
    // code to display the data in the table.
}

有没有方法可以检查ResultSet返回的行数?还是我必须自己写?


请返回已翻译的文本:重复的问题:https://dev59.com/pWsz5IYBdhLWcg3w9ssQ - james.garriss
14个回答

0
你可以将ResultSet加载到TableModel中,然后创建一个使用那个TableModel的JTable,之后使用table.getRowCount()方法。如果你要显示查询结果,无论如何都需要这样做。
ResultSet resultSet;
resultSet = doQuery(something, somethingelse);
KiransTableModel myTableModel = new KiransTableModel(resultSet);
JTable table = new JTable(KiransTableModel);
int rowCount;
rowCount = table.getRowCount;

0

这是我的解决方案

 ResultSet rs=Statement.executeQuery("query");

    int rowCount=0;


    if (!rs.isBeforeFirst()) 
      {

           System.out.println("No DATA" );
        } else {
            while (rs.next()) {
                rowCount++; 
            System.out.println("data1,data2,data3...etc..");
            }
            System.out.println(rowCount);
            rowCount=0;
            rs.close();
            Statement.close();
      }

0
在我的情况下,我需要从ResultSet获取总行数,并访问ResultSet值,如果总行数未达到XLS文件的限制。
为此,我必须对我的代码进行两个调整:
1)更改对象构造PreparedStatement
默认的ResultSet对象具有仅向前移动的光标。因此,您只能一次迭代它,并且只能从第一行到最后一行进行迭代。可以生成可滚动的ResultSet对象。以下代码片段说明了如何创建一个可滚动且对其他人的更新不敏感的结果集。
PreparedStatement ps = connection.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, 
ResultSet.CONCUR_READ_ONLY);

2) 获取总行数。以下代码片段说明如何实现:

ResultSet rs = ps.executeQuery();
rs.last();
int totalRowsResult = rs.getRow();

PS:如果查询结果的记录数过多,您可能会因为出现异常而在Java服务器上耗尽内存:java.lang.OutOfMemoryError: Java堆空间。当执行rs.last()方法时,将会出现此异常。

3)再次访问ResultSet,您将不会收到消息:结果集已用完。因此,您需要将结果集重置到顶部,使用rs.first()或rs.absolute(1)。以下代码片段说明了如何实现:

rs.first();
System.out.println(rs.getString(1));

-1

您可以按以下方式使用 res.previous()

ResulerSet res = getDate();
if(!res.next()) {
    System.out.println("No Data Found.");
} else {
    res.previous();
    while(res.next()) {
      //code to display the data in the table.
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接