mysql笔记六——元数据(Metadata)DataBaseMetaData、ParameterMetaData 、ResultSetMetaData
2016-08-10 14:48
344 查看
定义:描述数据的数据,对数据及信息资源的描述性信息。元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
元数据的作用和意义: 元数据是关于数据的描述性数据信息,说明数据内容、质量、状况和其他有关特征的背景信息。其目的是促进数据集的高效利用,并为计算机辅助软件工程服务。
sql元数据数据的分类:DataBaseMetaData、ParameterMetaData 、ResultSetMetaData
1、DataBaseMetaData:通过DataBaseMetaData元数据,我们可以了解数据库的详细信息。
例子:
2、ResultSetMetaData :结果集元数据,可以跨数据库操作
例子:
元数据的作用和意义: 元数据是关于数据的描述性数据信息,说明数据内容、质量、状况和其他有关特征的背景信息。其目的是促进数据集的高效利用,并为计算机辅助软件工程服务。
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(); } }
相关文章推荐
- mysql登陆密码过期 mac环境
- MySql知识结构说明
- mysql索引覆盖之innodb和myisam效率问题
- MySQL中information_schema是什么
- MySql主主互备
- Cent os mysql主从同步问题
- mysql 添加索引演变进程
- mysql explain分析
- MySQL 表空间传送
- mysql中间件kingshard安装
- MySQL 数据库常用命令小结
- mysql集群-ndb
- 解决mysql占用IO过高
- mysql 显示所有的数据库 常用命令
- mysql 主从复制 忽略错误
- linux C下的MySQL编程
- MySQL学习---->第一练:语句入门、数据类型
- 从mysql连接池中获取到失效连接的问题
- win下mysql的安装,配置及操作
- mysql性能优化经验