HOWTO · Java

在 Java 中获取 SQL ResultSet 的大小

本教程演示了如何在 Java 中获取 SQL 结果集的大小。

本页内容

在 Java 中查找 SQL ResultSet 的大小可能很棘手,因为 SQL 不提供诸如 length()size() 之类的任何方法;它只提供了滚动数据库的方法,这也是基于数据库类型的。

本教程演示了一种使用任何数据库查找 SQL ResultSet 大小的通用方法。

在 Java 中查找 SQL ResultSet 的大小

首先,确定要查找 ResultSet 大小的数据库表并确定你的查询。我们创建了一个示例数据库,我们将通过选择查询中的所有项目来获得 ResultSet 的大小。

我们创建的数据库如下。

数据库

现在让我们尝试使用 Java 获取 ResultSet 的大小。我们使用 SqlLite 数据库,但该程序将适用于其他数据库,如 OracleMySQL 并正确建立连接。

请参阅 Java 示例:

package Delfstack;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

class Get_Result_Set {
  public static void main(String[] args) {
    Connection db_con = null;
    PreparedStatement db_Statement = null;
    ResultSet result_set = null;
    try {
      String db_path = "jdbc:sqlite:path-to-db/sample.db";
      db_con = DriverManager.getConnection(db_path);
      System.out.println("The Data Based Connection is established.");

      db_Statement = db_con.prepareStatement(
          "select * from Products", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);

      result_set = db_Statement.executeQuery();

      int Row_Count = 0;
      System.out.println("Display all the records in ResultSet object");
      System.out.println("Product_Id\tProduct_Name");
      while (result_set.next()) {
        System.out.println(
            result_set.getString("Product_Id") + "\t\t" + result_set.getString("Product_Name"));
        // Row count will get the length of result set
        Row_Count++;
      }
      System.out.println("Total number of rows in ResultSet object = " + Row_Count);

    } catch (SQLException e) {
      throw new Error("Problem", e);
    } finally {
      try {
        if (db_con != null) {
          db_con.close();
        }
      } catch (SQLException ex) {
        System.out.println(ex.getMessage());
      }
    }
  }
}

上面的代码计算了行的迭代次数,这将得到 ResultSet 的大小。查看程序的输出:

The Data Based Connection is established.
Display all the records in ResultSet object
Product_Id	Product_Name
1           Delfstack1
2           Delftstack2
3           Delftstack3
4           Delftstack4
5           Delftstack5
6           Delftstack6
7           Delftstack7
8           Delftstack8
9           Delftstack9
10          Delftstack10
The Size of the ResultSet object according to rows = 10

查询 select * from ProductsResultSet 的大小为 10。