在 Java 中获取 SQL ResultSet 的大小

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

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

在 Java 中查找 SQL ResultSet 的大小

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

我们创建的数据库如下。

在 Java 中获取 SQL ResultSet 的大小

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

请参阅 Java 示例:

package Delfstack;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.ResultSet;
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。