Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Đếm số cột trong bảng MySQL bằng Java (JDBC ResultSetMetaData)

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ứcMô 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(...).