ResultSetMetaData Interface trong JDBC

Nếu bạn muốn lấy thông tin như tổng số cột, tên cột, kiểu của cột, … trong một bảng, thì bạn nên sử dụng ResultSetMetaData Interface bởi vì nó cung cấp các phương thức để lấy metadata từ đối tượng ResultSet.

Bạn theo dõi đoạn code sau. Đầu tiên tạo đối tượng Resultset là rs, tạo đối tượng ResultSetMetaData là rsmd và sử dụng đối tượng rsmd này để tìm xem có bao nhiêu cột mà rs có và xác định xem cột đầu tiên trong rs có thể được sử dụng trong một mệnh đề WHERE không.

ResultSet rs = stmt.executeQuery("SELECT mssv, ho, ten, diemthi FROM sinhvienk60");
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
boolean b = rsmd.isSearchable(1);

Một số phương thức được sử dụng phổ biến của đối tượng ResultSetMetaData

1. public int getColumnCount()throws SQLException

Trả về tổng số cột trong đối tượng ResultSet.

2. public String getColumnName(int index)throws SQLException

Trả về tên cột tại chỉ mục đã cho.

3. public String getColumnTypeName(int index)throws SQLException

Trả về tên kiểu của cột tại chỉ mục đã cho.

4. public String getTableName(int index)throws SQLException

Trả về tên bảng cho chỉ mục cột đã xác định.

5. public Boolean isAutoIncrement(int column)

Xác định xem cột đã cho có phải là tự động tăng (auto-increment) hay không.

Lấy đối tượng ResultSetMetaData trong JDBC

Để lấy đối tượng ResultSetMetaData, bạn sử dụng phương thức getMetaData() của ResultSet Interface với cú pháp:

public ResultSetMetaData getMetaData()throws SQLException

Ví dụ

Dưới đây là một ví dụ thực sự đơn giản để lấy một số thông tin về tổng số cột, tên và kiểu của cột thứ nhất trong bảng sinhvienk60 trong cơ sở dữ liệu sinhvien.

package com.hoctv.jdbc; import java.sql.*; 
class ViDuJDBC{ 
public static void main(String args[]){ 
try{ 
Class.forName("com.mysql.jdbc.Driver"); 
 
Connection con=DriverManager.getConnection( 
"jdbc:mysql://localhost/sinhvien","root","123456"); 
 
PreparedStatement ps=con.prepareStatement("SELECT * FROM sinhvienk60"); 
ResultSet rs=ps.executeQuery(); 
 
ResultSetMetaData rsmd=rs.getMetaData(); 
 
System.out.println("Tong so cot la: "+rsmd.getColumnCount()); 
System.out.println("Ten cua cot thu nhat la: "+rsmd.getColumnName(1)); 
System.out.println("Ten kieu cua cot thu nhat la: "+rsmd.getColumnTypeName(1)); 
 
con.close(); 
 
}catch(Exception e){ System.out.println(e);} 
 
} 
} 

Bạn sao chép, dán và lưu ví dụ trong ViDuJDBC.java, sau đó chạy chương trình Java trên sẽ cho kết quả:


Bình luận