一 . 得到这个对象的实例

Connection con ;

con = DriverManager.getConnection(url,userName,password);

DatabaseMetaData dbmd = con.getMetaData();

二. 方法getTables的用法

原型:

ResultSet DatabaseMetaData.getTables(String catalog,String schema,String tableName,String []type)

此方法可返回结果集合ResultSet ,结果集中有5列, 超出会报越界异常

功能描述:得到指定参数的表信息

参数说明:

参数:catalog:目录名称,一般都为空.

参数:schema:数据库名,对于oracle来说就用户名

参数:tablename:表名称

参数:type :表的类型(TABLE | VIEW)

注意:在使用过程中,参数名称必须使用大写的。否则得到什么东西。

三. 方法getColumns的用法

功能描述:得到指定表的列信息。

原型:

ResultSet DatabaseMetaData getColumns(String catalog,String schema,String tableName,String columnName)

参数说明:

参数catalog : 类别名称

参数schema : 用户方案名称

参数tableName : 数据库表名称

参数columnName : 列名称

四、方法getPrimaryKeys的用法

功能描述:得到指定表的主键信息。

原型:

ResultSet DatabaseMetaData getPrimaryKeys(String catalog,String schema,String tableName)

参数说明:

参数catalog : 类别名称

参数schema : 用户方案名称

参数tableName : 数据库表名称

备注:一定要指定表名称,否则返回值将是什么都没有。

五、方法.getTypeInfo()的用法

功能描述:得到当前数据库的数据类型信息。

六、方法getExportedKeys的用法

功能描述:得到指定表的外键信息。

参数描述:

参数catalog : 类别名称

参数schema : 用户方案名称

参数tableName : 数据库表名称

DatabaseMetaData对象提供的是关于数据库的各种信息,这些信息包括:

1、数据库与用户,数据库标识符以及函数与存储过程。

2、数据库限制。

3、数据库支持不支持的功能。

4、架构、编目、表、列和视图等。

通过调用DatabaseMetaData的各种方法,程序可以动态的了解一个数据库。由于这个类中的方法非常的多那么就介绍几个常用的方法来给大家参考。

DatabaseMetaData实例的获取方法是,通过连接来获得的

Connection conn = //创建的连接。

DatabaseMetaData dbmd = Conn.getMetaData();

创建了这个实例,就可以使用他的方法来获取数据库得信息。首先是数据库中用户标识符的信息的获得,主要使用如下的方法:

getDatabaseProductName()用以获得当前数据库是什么数据库。比如oracle,access等。返回的是字符串。

getDatabaseProductVersion()获得数据库的版本。返回的字符串。

getDriverVersion()获得驱动程序的版本。返回字符串。

supportsResultSetType(ResultSet.resultype)是判定是否支持这种结果集的类型。比如参数如果是Result.TYPE_FORWARD_ONLY,那就是判定是否支持,只能先前移动结果集的指针。返回值为boolean,true表示支持。

上面介绍的只是几个常用的方法,这个类中还有很多方法,可以到jdk的帮助文档中去查看类java.sql.DatabaseMetaData。

这个类中还有一个比较常用的方法就是获得表的信息。使用的方法是:

getTables(String catalog,String schema,String tableName,String[] types),

这个方法带有四个参数,他们表示的含义如下:

String catalog——要获得表所在的编目。串“”””意味着没有任何编目,Null表示所有编目。

String schema——要获得表所在的模式。串“”””意味着没有任何模式,Null表示所有模式。该参数可以包含单字符的通配符(“_”),也可以包含多字符的通配符(“%”)。

String tableName——指出要返回表名与该参数匹配的那些表,该参数可以包含单字符的通配符(“_”),也可以包含多字符的通配符(“%”)。

String types——一个指出返回何种表的数组。可能的数组项是:”TABLE”,”VIEW”,”SYSTEM TABLE”,”GLOBAL TEMPORARY”,”LOCAL TEMPORARY”,”ALIAS”,“SYSNONYM”。

通过getTables()方法返回一个表的信息的结果集。这个结果集包括字段有:TABLE_CAT表所在的编目。TABLE_SCHEM表所在的模式,TABLE_NAME表的名称。TABLE_TYPE标的类型。REMARKS一段解释性的备注。通过这些字段可以完成表的信息的获取。

还有两个方法一个是获得列getColumns(String catalog,String schama,String tablename,String columnPattern)一个是获得关键字的方法getPrimaryKeys(String?catalog, String?schema, String?table)这两个方法中的参数的含义和上面的介绍的是相同的。凡是pattern的都是可以用通配符匹配的。getColums()返回的是结果集,这个结果集包括了列的所有信息,类型,名称,可否为空等。getPrimaryKey()则是返回了某个表的关键字的结果集。

通过getTables(),getColumns(),getPrimaryKeys()就可以完成表的反向设计了。主要步骤如下:

1、通过getTables()获得数据库中表的信息。

2、对于每个表使用,getColumns(),getPrimaryKeys()获得相应的列名,类型,限制条件,关键字等。

3、通过1,2获得信息可以生成相应的建表的SQL语句。

通过上述三步完成反向设计表的过程。

mysql databasemetadata_DatabaseMetaData的用法(转)相关推荐

  1. MySQL:讨人喜欢的 MySQL replace into 用法(insert into 的增强版)

    讨人喜欢的 MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果 ...

  2. 【node】express中mysql的基本用法、连接池的使用、事务的回滚

    [node]express中mysql的基本用法.连接池的使用 安装mysql包 mysql的配置信息 mysql基本操作 查询mysql并渲染数据 mysql插入操作 首先在html页面写上< ...

  3. Linux下Mysql的查询用法

    Linux下Mysql的查询用法 一.Mysql的delete删除语法 1.删除数据库 2.删除数据库的表 二.查询数据 1.基本查询 2.条件查询 三.数据库插入数据 1.创建新表 2.插入数据 四 ...

  4. MySQL replace into 用法

    MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果存在,则更新 ...

  5. Mysql临时表的用法 - 51CTO.COM

    Mysql临时表的用法 - 51CTO.COM Mysql临时表我们经常会用到,下面就为您详细介绍Mysql临时表的用法,供您参考,如果您对此方面感兴趣的话,不妨一看. 当工作在非常大的表上时,你可能 ...

  6. mysql中as用法

    重命名列名或者表名. as可理解为:用作.当成,作为:一般是重命名列名或者表名.(主要为了查询方便) 重命名列.如:表text, 列 column_1,column_2 你可以写成: 1 select ...

  7. mysql alter怎么用,mysql alter话语用法

    mysql alter语句用法 //主键 ALTER TABLE tablename add new_field_id int(5) UNSIGNED DEFAULT 0 NOT NULL anto_ ...

  8. pdo mysql limit_PHP mysql中limit用法详解(代码示例)

    在MySQL中,LIMIT子句与SELECT语句一起使用,以限制结果集中的行数.LIMIT子句接受一个或两个offset和count的参数.这两个参数的值都可以是零或正整数. offset:用于指定要 ...

  9. [转载]MySQL exists的用法介绍

    原文摘自:http://www.cnblogs.com/glory-jzx/archive/2012/07/19/2599215.html MySQL exists的用法介绍 有一个查询如下: 1 S ...

最新文章

  1. HTML元素的基本特性
  2. RocketMQ集群搭建-4.2.0版本
  3. C语言不用文件系统读取文件,C语言-基础教程-非缓冲文件系统
  4. 设置某个元素的标签内容、设置元素的样式、层次选择器、总结选择器
  5. 《云计算架构技术与实践》连载(12)2.2.7 应用管理自己主动化技术
  6. PHP函数call_user_func和call_user_func_array详解
  7. oracle24550,ORA-24550: signal received:这个问题的原因及解决办法
  8. Java 错误:找不到或无法加载主类(源文件中含有包名 package)
  9. 推荐记录片系列:Ultimate Factories系列和MegaStructures系列
  10. C++入门——实现十字消除游戏
  11. 软考计算机硬件知识,软考程序员考点计算机硬件基础知识之存储器简介
  12. C/S架构的优点和缺点
  13. 公众号数据全面分析解读(上篇)
  14. 955/965公司名单
  15. Windows每天定时启动应用程序
  16. 软考高级五大证书,哪个更值得考?
  17. 创新实训(2)-Scrapy 学习
  18. Confluence 你可以对编辑器中的表格进行什么样的操作
  19. ROS2 学习古月居ros21讲学习笔记
  20. ABB机器人通过直接输入法设置工具坐标系的具体方法和步骤

热门文章

  1. JSP虚拟旅游商店系统myeclipse开发sql数据库BS模式java编程网页结构
  2. 休闲食品行业发展现状
  3. html里的图片地址怎么搞,HTML图片的地址怎么写
  4. 黑盒测试-数据的读取与输出方式
  5. Jetson TX2板载摄像头(二)
  6. ThinkPad X1Carbon 使用VMware打开虚拟机报错Intel VT-x
  7. scala中val与def定义的区别
  8. layui中form.val组件
  9. Fascinating sort c语言 小悦是个聪明学生,给一个长度为N
  10. 动态style中backgroundImage的url无法显示问题