MetaData

作者: 老茂在北京 | 来源:发表于2017-04-23 10:39 被阅读73次

    MetaData 元数据

    指数据库中 库、表、列的定义信息。

    DataBaseMetaData 数据库元数据

    通过DataBaseMetaData获取数据库连接的基本信息

    • getURL(); 返回一个String类对象,代表数据库的URL
    • getUserName(); 返回连接当前数据库管理系统的用户名
    • getDriverName(); 返回驱动程序的名称
    • getPrimaryKeys(String catalog, String schema, String table); 返回指定表主键的结果集
      • 1 - TABLE_CAT String => 表类别(可为null)
      • 2 - TABLE_SCHEM String => 表模式(可为null)
      • 3 - TABLE_NAME String => 表名称
      • 4 - COLUMN_NAME String => 列名称
      • 5 - KEY_SEQ short => 主键中的序列号
      • 6 - PK_NAME String =>主键的名称(可为null)
    public class DataBaseMetaDataTest {
        public static void main(String[] args) throws Exception {   
            Connection con = jdbcUtils.getConnection();
            //获取DataBaseMetaData对象
            DatabaseMetaData dmd = con.getMetaData();
            String driverName = dmd.getDriverName();
            System.out.println(driverName);
            String userName = dmd.getUserName();
            System.out.println(userName);
            String url = dmd.getURL();
            System.out.println(url);
            //数据库产品名称,MySQL
            String name = dmd.getDatabaseProductName();
            System.out.println(name);
            //版本
            String version = dmd.getDatabaseProductVersion();
            System.out.println(version);
    
    ResultSet rs = dmd.getPrimaryKeys(null, null, "account");
            while(rs.next()){
                System.out.println(rs.getObject(3));//3,代表第三列TABLE_NAME
            }
        }
    }
    

    获取数据库表、列、主键、外键定义信息

    • getTables
    • getColumns
    • getPrimaryKeys

    ParameterMetaData 参数元数据

    参数元数据主要用于获取sql语句中占位符的相关信息。

    • 获取参数元数据
      • PreparedStatement.getParameterMetaData()
    • ParameterMetaData 对象
      • getParameterCount() 获取指定参数的个数
      • getParameterTypeName(int param) 获得指定参数的sql类型
    public class ParameterMetaDateTest {
        public static void main(String[] args) throws Exception {
            Connection con = jdbcUtils.getConnection();
            String sql = "select * from account where id=?";
            PreparedStatement pst = con.prepareStatement(sql);
            
            //获取一个ParameterMetaData
            ParameterMetaData pm = pst.getParameterMetaData();
            
            int count = pm.getParameterCount();//获取参数个数
            String name = pm.getParameterTypeName(1);
    //需要在url后添加参数?generateSimpleParameterMetadata=true
            System.out.println(name);
        }
    }
    

    ResultSetMetaData结果集元数据(重点)

    • 获得ResultSetMetaData对象
      • ResultSet.getMetaData();
    • ResultSetMetaData对象
      • getColumnCount(); 返回resultSet对象的列数
      • getColumnName(int column);
      • getColumnTypeName(int column);
    public class ResultSetMetaDateTest {
        public static void main(String[] args) throws Exception{
            Connection con = jdbcUtils.getConnection();
            ResultSet rs = con.createStatement().executeQuery("select * from account");
            
            //得到结果集元数据
            ResultSetMetaData rmd = rs.getMetaData();
            
            System.out.println(rmd.getColumnCount());
            System.out.println(rmd.getColumnName(2));
            System.out.println(rmd.getColumnTypeName(1));
        }
    }
    

    相关文章

      网友评论

          本文标题:MetaData

          本文链接:https://www.haomeiwen.com/subject/yowezttx.html