Giao diện ResultSetMetaData trong java được sử dụng để lấy ra các metadata từ đối tượng ResultSet.
Siêu dữ liệu (metadata) là các thông tin của dữ liệu. Ví dụ, một metadata của file là ngày tháng tạo file, dung lượng của file, ... Metadata của một bảng trong CSDL là các thông tin về bảng như tên bảng, tên cột, kiểu giá trị của cột, ...
Nội dung chính
Làm thế nào để có được đối tượng ResultSetMetaData
Phương thức getMetaData() của giao diện ResultSet trả về đối tượng ResultSetMetaData. Cú pháp:
ResultSetMetaData getMetaData() throws SQLException;
Các phương thức phổ biến của giao diện ResultSetMetaData
Dưới đây là các phương thức phổ biến của giao diện ResultSetMetaData trong java:
Method | Description |
---|---|
public int getColumnCount()throws SQLException | nó trả về tổng số các cột trong đối tượng ResultSet. |
public String getColumnName(int index)throws SQLException | nó trả về tên cột của chỉ số cột được chỉ định. |
public String getColumnTypeName(int index)throws SQLException | nó trả về tên cột cho chỉ số đã chỉ định. |
public String getTableName(int index)throws SQLException | nó trả về tên bảng cho chỉ số cột được chỉ định. |
Ví dụ về ResultSetMetaData interface
Tạo bảng ‘student’ trong cơ sở dữ liệu có tên ‘testdb’ trong MySQL với câu lệnh như sau:
CREATE TABLE student ( id INT NOT NULL, name VARCHAR (32) NOT NULL, address VARCHAR (32) NOT NULL, PRIMARY KEY (id) );
Chương trình sau lấy ra một vài metadata của bảng 'student':
package vn.viettuts.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; public class ResultSetMetaDataExample { private static String DB_URL = "jdbc:mysql://localhost:3306/testdb"; private static String USER_NAME = "root"; private static String PASSWORD = "1234567890"; public static void main(String[] args) { String selectAll = "SELECT * FROM student"; try { // connect to database Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(DB_URL, USER_NAME, PASSWORD); // crate statement PreparedStatement stmt = conn.prepareStatement(selectAll); // get data from table 'student' ResultSet rs = stmt.executeQuery(); // get metadata from rs ResultSetMetaData rsmd = rs.getMetaData(); // show metadata System.out.println("Tong so column cua bang 'student': " + rsmd.getColumnCount()); System.out.println("Ten column thu 2: " + rsmd.getColumnName(2)); System.out.println("Column type cua column thu 2: " + rsmd.getColumnTypeName(2)); stmt.close(); conn.close(); } catch (SQLException ex) { ex.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
Kết quả:
Tong so column cua bang 'student': 3 Ten column thu 2: name Column type cua column thu 2: VARCHAR