Trong Java JDBC, interface ResultSetMetaData cung cấp thông tin siêu dữ liệu về cột của ResultSet. Phương thức getColumnCount() trả về số lượng cột.
Mã Java hoàn chỉnh
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
public class CountColumnsDemo {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/web?useSSL=false";
String user = "root";
String pass = "123456";
try (Connection con = DriverManager.getConnection(url, user, pass);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT StudentId, StudentFirstName, StudentLastName FROM DemoTable")) {
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
System.out.println("Number Of Columns: " + columnCount);
System.out.println("All Details Of Columns:");
for (int i = 1; i <= columnCount; i++) {
String columnName = rsmd.getColumnName(i);
String dataType = rsmd.getColumnTypeName(i);
System.out.println(columnName + " has data type " + dataType);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Kết quả chạy
Number Of Columns: 3 All Details Of Columns: StudentId has data type INT StudentFirstName has data type VARCHAR StudentLastName has data type VARCHAR
Giải thích các phương thức hay dùng của ResultSetMetaData
| Phương thức | Mô tả |
|---|---|
getColumnCount() | Số cột trong ResultSet |
getColumnName(int column) | Tên cột (hoặc alias) |
getColumnLabel(int column) | Nhãn hiển thị (alias nếu có) |
getColumnType(int column) | Kiểu SQL (java.sql.Types) |
getColumnTypeName(int column) | Tên kiểu dữ liệu DB (VARCHAR, INT...) |
getPrecision(int column) | Độ chính xác (số chữ số tối đa) |
getScale(int column) | Số chữ số thập phân |
isNullable(int column) | Cho phép NULL? |
isAutoIncrement(int column) | Là AUTO_INCREMENT? |
getTableName(int column) | Tên bảng nguồn |
Lưu ý
- Chỉ số cột trong JDBC **bắt đầu từ 1** (không phải 0).
- Cần driver MySQL (mysql-connector-java) trong classpath.
- Dùng
try-with-resources(Java 7+) để tự đóng kết nối. - Để lấy meta dữ liệu bảng mà không chạy query:
DatabaseMetaData.getColumns(...).