Java JDBC - DatabaseMetaData trong java

DatabaseMetaData trong java

Giao diện DatabaseMetaData trong java cung cấp các phương thức để lấy metadata của cơ sở dữ liệu như tên sản phẩm cơ sở dữ liệu, phiên bản sản phẩm cơ sở dữ liệu, tên driver, tên của tổng số bảng, tên của tổng số các view, ...

Làm thế nào để có được đối tượng DatabaseMetaData

Phương thức getMetaData() của Giao diện Connection trả về đối tượng DatabaseMetaData. Cú pháp:

public DatabaseMetaData getMetaData() throws SQLException;

Ví dụ về DatabaseMetaData trong java

Ví dụ 1:

package vn.viettuts.jdbc;
 
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
 
public class DatabaseMetaDataExample {
    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) {
        try {
            // connect to database
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection(DB_URL, 
                    USER_NAME, PASSWORD);
            // get DatabaseMetaData object
            DatabaseMetaData dbmd = conn.getMetaData();
 
            // show metadata of database
            System.out.println("Driver Name: " + dbmd.getDriverName());
            System.out.println("Driver Version: " + dbmd.getDriverVersion());
            System.out.println("UserName: " + dbmd.getUserName());
            System.out.println("Database Product Name: "
                    + dbmd.getDatabaseProductName());
            System.out.println("Database Product Version: "
                    + dbmd.getDatabaseProductVersion());
             
            conn.close();
        } catch (Exception ex) {
            System.out.println("connect failure!");
            ex.printStackTrace();
        }
    }
}

Kết quả:

Driver Name: MySQL-AB JDBC Driver
Driver Version: mysql-connector-java-5.1.6 ( Revision: ${svn.Revision} )
UserName: root@localhost
Database Product Name: MySQL
Database Product Version: 5.5.5-10.1.21-MariaDB

Ví dụ 2: in ra màn hình tên các bảng của database:

package vn.viettuts.jdbc;
 
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
 
public class DatabaseMetaDataExample2 {
    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) {
        try {
            // connect to database
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection(DB_URL, 
                    USER_NAME, PASSWORD);
            // get DatabaseMetaData object
            DatabaseMetaData dbmd = conn.getMetaData();
 
            // show list table database
            String table[] = { "TABLE" };
            ResultSet rs = dbmd.getTables(null, null, null, table);
            while (rs.next()) {
                System.out.println(rs.getString(3));
            }
             
            conn.close();
        } catch (Exception ex) {
            System.out.println("connect failure!");
            ex.printStackTrace();
        }
    }
}

Kết quả:

sessions
student

Tham khảo API của DatabaseMetaData interface tại Interface DatabaseMetaData