mysql笔记六——元数据(Metadata)DataBaseMetaData、ParameterMetaData 、ResultSetMetaData

  • 定义:描述数据的数据,对数据及信息资源的描述性信息。元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
  • 元数据的作用和意义: 元数据是关于数据的描述性数据信息,说明数据内容、质量、状况和其他有关特征的背景信息。其目的是促进数据集的高效利用,并为计算机辅助软件工程服务。
  • sql元数据数据的分类:DataBaseMetaData、ParameterMetaData 、ResultSetMetaData

1、DataBaseMetaData:通过DataBaseMetaData元数据,我们可以了解数据库的详细信息。
例子:

@Test
    public void databaseMetadataDemo() throws SQLException{

        Connection con=ConnsUtils.getCon();
        DatabaseMetaData dmd=con.getMetaData();
        System.out.println(dmd.getDriverName());
        System.out.println(dmd.getURL());
        System.out.println(dmd.getUserName());
        System.out.println("=========================");

        //※动态获取数据库名
        ResultSet rs = dmd.getCatalogs();//相当于执行:show databases;只能获取当前用户下的所有数据库
        while(rs.next()){
            System.out.println(rs.getString(1));
        }
        System.out.println("=========================");
        con.createStatement().execute("use test");
        String sql=" select *from stud";
        //※知道数据库的名字,动态获取表名
        /*  catalog - 类别名称;它必须与存储在数据库中的类别名称匹配;该参数为 "" 表示获取没有类别的那些描述;为 null 则表示该类别名称不应该用于缩小搜索范围 null和""表示匹配所有
        schemaPattern - 模式名称的模式;它必须与存储在数据库中的模式名称匹配;该参数为 "" 表示获取没有模式的那些描述;为 null 则表示该模式名称不应该用于缩小搜索范围 null和""表示匹配所有
        tableNamePattern - 表名称模式;它必须与存储在数据库中的表名称匹配,null和""表示匹配所有
        types - 要包括的表类型所组成的列表,必须取自从 getTableTypes() 返回的表类型列表;null 表示返回所有类型 */


        ResultSet rs2=dmd.getTables("test", "test", null, new String[]{"TABLE","INTERGER"});
        while(rs2.next()){
            System.out.println(rs2.getString("TABLE_NAME"));
        }
        //      ResultSet rs2=con.createStatement().executeQuery(sql);
        //      while(rs2.next()){
        //          System.out.println(rs2.getString(2));
        //      }
    }

2、ResultSetMetaData :结果集元数据,可以跨数据库操作

例子:

//在知道数据库名与表名的情况下,可以通过跨库查询,把表头和表内容都查询出来
    @Test//站在结果集的高度--表格
    public void resultSetMetaDataDemo() throws Exception{
        Connection con=ConnsUtils.getCon();
        Statement st=con.createStatement();
        //跨数据库查询 用“数据库名.表名”----select * from mydb.student
        String sql="select *from test.stud";
        ResultSet rs=st.executeQuery(sql);
        ResultSetMetaData rsmd=rs.getMetaData();
        int columns=rsmd.getColumnCount();
        //表头
        for(int i=0;i<columns;i++){
            System.out.println(rsmd.getCatalogName((i+1))+"\t");
        }
        System.out.println("------------------------");
        //表内容
        while(rs.next()){
            for(int i=0;i<columns;i++){
                String content = rs.getString(i+1);
                System.out.print(content+"\t");
            }
            System.out.println();
        }
    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值