Đáp án ngắn gọn
Kiểu trả về của COUNT(*) trong MySQL qua JDBC là long (tương ứng BIGINT trong MySQL).
Mã Java mẫu
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class ReturnTypeOfCount {
public static void main(String[] args) {
Connection con = null;
Statement st = null;
ResultSet rs = null;
try {
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test3?useSSL=false", "root", "123456");
String query = "SELECT COUNT(*) AS totalCount FROM CountDemo";
st = con.createStatement();
rs = st.executeQuery(query);
rs.next();
long result = rs.getLong("totalCount");
System.out.println("Total Count=" + result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Giải thích
rs.getLong("totalCount"): Đọc giá trị COUNT dưới dạnglong- Alias
totalCountgiúp truy xuất cột dễ dàng hơn - MySQL COUNT() trả về BIGINT (8 bytes), khớp với Java long
Chuẩn bị dữ liệu test
mysql> CREATE TABLE CountDemo (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(20)
);
mysql> INSERT INTO CountDemo(Name) VALUES('John'),('Carol'),('Bob'),('David');
+----+-------+ | Id | Name | +----+-------+ | 1 | John | | 2 | Carol | | 3 | Bob | | 4 | David | +----+-------+
Kết quả chạy chương trình
Total Count=4
Lưu ý: Luôn dùng getLong() thay vì getInt() để tránh tràn số khi bảng có nhiều bản ghi (> 2 tỷ).