JDBC元数据-DatabaseMetaData

1 DatabaseMetaData介绍

DatabaseMetaData接口提供了获取数据库元数据的方法,例如数据库产品名称,数据库产品版本,驱动程序名称,表总数量,视图总数量等。

2 DatabaseMetaData接口方法

方法 说明
public String getDriverName()throws SQLException 返回JDBC驱动程序的名称
public String getDriverVersion()throws SQLException 返回JDBC驱动程序的版本号
public String getUserName()throws SQLException 返回数据库的用户名
public String getDatabaseProductName()throws SQLException 返回数据库的产品名称
public String getDatabaseProductVersion()throws SQLException 返回数据库的产品版本
public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)throws SQLException 返回指定目录表的类型。表格类型可以是TABLE,VIEW,ALIAS,SYSTEM TABLE,SYNONYM等

3 获取DatabaseMetaData对象

Connection接口的getMetaData() 方法返回DatabaseMetaData的对象。语法为:

public DatabaseMetaData getMetaData()throws SQLException

4 DatabaseMetaData简单示例

4.1 编写测试类

DatabaseMetaDataDemo:

package com.yiidian;

import java.sql.*;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class DatabaseMetaDataDemo {
    public static void main(String args[])throws Exception {
        try{
            Class.forName("com.mysql.jdbc.Driver");

            Connection con= DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/test","root","root");

            DatabaseMetaData dbmd=con.getMetaData();

            System.out.println("驱动名称: "+dbmd.getDriverName());
            System.out.println("驱动版本: "+dbmd.getDriverVersion());
            System.out.println("数据库用户名: "+dbmd.getUserName());
            System.out.println("数据库产品名称: "+dbmd.getDatabaseProductName());
            System.out.println("数据库产品版本: "+dbmd.getDatabaseProductVersion());

            con.close();
        }catch(Exception e){
            System.out.println(e);
        }

    }
}

4.2 运行测试

5 DatabaseMetaData获取所有表

5.1 编写测试类

DatabaseMetaDataTableDemo:

package com.yiidian;

import java.sql.*;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class DatabaseMetaDataTableDemo {
    public static void main(String args[])throws Exception {
        try{
            Class.forName("com.mysql.jdbc.Driver");

            Connection con= DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/test","root","root");

            DatabaseMetaData dbmd=con.getMetaData();
            String table[]={"TABLE"};
            ResultSet rs=dbmd.getTables(null,null,null,table);

            while(rs.next()){
                System.out.println(rs.getString(3));
            }

            con.close();
        }catch(Exception e){
            System.out.println(e);
        }

    }
}

5.2 运行测试

6 DatabaseMetaData获取所有视图

6.1 创建视图

CREATE VIEW view_t_user
AS SELECT * FROM t_user;

6.2 编写测试类

DatabaseMetaDataViewDemo:

package com.yiidian;

import java.sql.*;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class DatabaseMetaDataViewDemo {
    public static void main(String args[])throws Exception {
        try{
            Class.forName("com.mysql.jdbc.Driver");

            Connection con= DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/test","root","root");

            DatabaseMetaData dbmd=con.getMetaData();
            String table[]={"VIEW"};
            ResultSet rs=dbmd.getTables(null,null,null,table);

            while(rs.next()){
                System.out.println(rs.getString(3));
            }

            con.close();
        }catch(Exception e){
            System.out.println(e);
        }

    }
}

6.3 运行测试

推荐好课