数据库中元数据MetaData

数据库中元数据MetaData

直接演示如何使用

@Test //DatabaseMetaData,获取:驱动信息、数据库名、表名
    public void DbMetaDemo() throws Exception{
        Connection con = Conn4Utils.getConn();

        DatabaseMetaData dm = con.getMetaData();//★★入口

        System.out.println(dm.getDriverName());
        System.out.println(dm.getDriverVersion());
        System.out.println(dm.getMaxStatements());
        System.out.println(dm.getJDBCMajorVersion());

        //获取所有数据名
        System.out.println("---------------------");
        ResultSet rs = dm.getCatalogs(); 
        while(rs.next()){
            String name = rs.getString("TABLE_CAT");
            System.out.println(name);
        }

        //获取数据库各个表的名字
        System.out.println("---------------------");
        //下面方法参数1和参数2:数据名,,参数3:表格名(可以采用正则方式如名称包含字符'a'的表名:'%a%')
        rs = dm.getTables("abc", "abc", null, new String[]{"TABLE","VIEW"} );
        while(rs.next()){
            String name = rs.getString("TABLE_NAME");
            System.out.println(name);
        }


        //获取指定数据库(名)中的指定表格(名)中的数据,,如果数据库名和表名采用上面的方式动态获取,那么就可做活
        System.out.println("-------------");
        con.createStatement().execute("use abc");
        String sql = "select * from stud";
        rs = con.createStatement().executeQuery(sql);
        while(rs.next()){
            System.out.println(rs.getString(1)+","+rs.getString(2));
        }

    }
@Test //ResultSetMetaData,获取:表结构信息(列的编号、类型和属性)
    public void RsMetaDemo() throws Exception{
        Connection con = Conn4Utils.getConn();
        Statement st = con.createStatement();
        //跨库查询,表名用: 数据名.表名
        String sql = "select * from abc.book";
        ResultSet rs = st.executeQuery(sql);

        ResultSetMetaData rsmd = rs.getMetaData();//★★入口

        int colNums = rsmd.getColumnCount(); //获取表格的列数
        //输出表头(第一列的字段名)
        for(int i=0;i<colNums;i++){
            String colName = rsmd.getColumnName(i+1);//参数序号从1开始
            System.out.print(colName+"\t");
        }
        System.out.println();

        //输出表数据(内容)
        while(rs.next()){
            for(int i=0;i<colNums;i++){
                System.out.print(rs.getString(i+1)+"\t"); //从数据库表中读取数据,用getString()可以兼容所有类型,只是所读取的数据都变成了字符串,若要还原成原来的类型还要强转回去
            }
            System.out.println();
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值