Tags:

Cách lấy tổng số dòng và số cột trong ResultSet

ResultSet là một interface được sử dụng để lưu trữ kết quả từ các câu truy vấn. Truy nhiên ResultSet không chứa bất kỳ một method này cho phép lấy trực tiếp tổng số dòng và số cột trong kết quả của câu truy vấn mà nó thực thi. Tuy nhiên vẫn có một số cách thay thế để có được kết quả như mong muốn mà chúng ta sẽ cùng nhau tìm hiểu trong bài viết này.

Chuẩn bị

Để triển khai các ví dụ bên dưới, chúng ta sẽ tạo một table với tên là MyPlayer trong MySQL database.

CREATE TABLE MyPlayers(
   ID INT,
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Date_Of_Birth date,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255),
   PRIMARY KEY (ID)
);

Tiếp theo tiến hành thêm dữ liệu vào MyPlayers table.

insert into MyPlayers values(1, 'Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India');
insert into MyPlayers values(2, 'Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica');
insert into MyPlayers values(3, 'Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka');
insert into MyPlayers values(4, 'Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India');
insert into MyPlayers values(5, 'Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India');
insert into MyPlayers values(6, 'Ravindra', 'Jadeja', DATE('1988-12-06'), 'Nagpur', 'India');
insert into MyPlayers values(7, 'James', 'Anderson', DATE('1982-06-30'), 'Burnley', 'England');

Ngoài ra chúng ta cũng cần download hoặc sử dụng JDBC connector trong dự án maven thông qua dependency

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.13</version>
</dependency>

Đếm tổng số dòng trong ResultSet

Trong ResultSet chứa last() method dùng để di chuyển con trỏ đến dòng cuối cùng trong ResultSet và getRow() trả về vị trí của dòng hiện tại. Do đó chúng ta có thể kết hợp 2 method này để lấy được tổng số dòng trong ResultSet.

import java.sql.*;

public class Main {

    private static final String DB_URL = "jdbc:mysql://localhost:3306/mydb?serverTimezone=UTC&useSSL=false";
    private static final String USER = "root";
    private static final String PASS = "123456";

    public static void main(String... args) {
        try (Connection connection = DriverManager.getConnection(DB_URL, USER, PASS)) {
            Statement stmt = connection.createStatement();
            ResultSet rs = stmt.executeQuery("select * from MyPlayers");
            rs.last();
            System.out.println("So dong: " + rs.getRow());
        } catch (SQLException e) {

        }
    }
}

Output: so dong 7

Đếm tổng số cột trong ResultSet

Chúng ta có lấy tổng số cột trong ResultSet thông qua getColumnCount() method từ ResultSetMetaData interface.

import java.sql.*;

public class Main {

    private static final String DB_URL = "jdbc:mysql://localhost:3306/mydb?serverTimezone=UTC&useSSL=false";
    private static final String USER = "root";
    private static final String PASS = "123456";

    public static void main(String... args) {
        try (Connection connection = DriverManager.getConnection(DB_URL, USER, PASS)) {
            Statement stmt = connection.createStatement();
            ResultSet rs = stmt.executeQuery("select * from MyPlayers");
            ResultSetMetaData rsMetaData = rs.getMetaData();
            System.out.println("So cot: " + rsMetaData.getColumnCount());
        } catch (SQLException e) {

        }
    }
}

Output: So cot: 6

Nguồn

https://www.tutorialspoint.com/how-to-get-row-and-column-count-from-resultset-in-jdbc

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x