网站建设知识
mysql笔记六—元数据(Metadata)DataBaseMetaData、ParameterMetaData、ResultSetMetaData
2025-07-22 10:00  点击:0
定义:描述数据的数据,对数据及信息资源的描述性信息。元数据(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";        //※知道数据库的名字,动态获取表名                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;intent="rs.getString(i+1);" i="0;i<columns;i++){" int="" pre="" string="">