`

DatabaseMetaData的用法(转) 获取数据库表结构的方法

阅读更多
DatabaseMetaData的用法(转)
2008-08-07 12:25

一 . 得到这个对象的实例
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语句。

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

分享到:
评论

相关推荐

    jsp数据库脱裤脚本,脱各种数据库

    7. 使用DatabaseMetaData对象可以获取数据库的元数据,例如表名、列名等。 8. 使用ResultSet对象可以获取查询结果,例如执行SHOW CREATE TABLE语句可以获取表结构。 9. 使用Statement对象可以执行SQL语句,例如...

    基于ArcGIS的空间数据库设计与建库方法.pdf

    数据字典是数据库的详细设计,定义了每个数据表的结构和内容。元数据库模型是数据库的元数据设计,定义了数据库的元数据结构和内容。数据库物理设计与建立是土地利用数据库的最终实现,定义了数据库的物理结构和存储...

    Java数据库编程宝典3

    10.2 使用DatabaseMetaData 10.3 检索与数据库相关的信息 10.3.1 在JTree中显示DatabaseMetaData 10.4 检索有关RDBMS功能性的信息 10.5 使用ResultSetMetaData 10.6 小结 第3部分 三层Web站点与JDBC 第11...

    Oracle 面试题及答案 面试常见的问题及回答 doc 数据库 db question 问题汇总

    * 两个检查表结构的方法:1.DESCRIBE 命令,2.DBMS_METADATA.GET_DDL 包。 * 如何查看数据库引擎的报错:alert log。 * 如何在 Oracle 中建立一个备份控制文件:Alter database backup control file to trace。 * ...

    ORACLE数据库面试题解答-DBA数据库管理员JAVA程序员架构师必看.pdf,这是一份不错的文件

    5. 检查表结构的方法:可以使用 DESCRIBE 命令或 DBMS_METADATA.GET_DDL 包来检查表结构。 知识点:检查表结构、DESCRIBE 命令、DBMS_METADATA.GET_DDL 包 6. 查看数据库引擎的报错:可以查看 alert log 来查看...

    Java数据库编程宝典2

    10.2 使用DatabaseMetaData 10.3 检索与数据库相关的信息 10.3.1 在JTree中显示DatabaseMetaData 10.4 检索有关RDBMS功能性的信息 10.5 使用ResultSetMetaData 10.6 小结 第3部分 三层Web站点与JDBC 第11...

    Java数据库编程宝典1

    10.2 使用DatabaseMetaData 10.3 检索与数据库相关的信息 10.3.1 在JTree中显示DatabaseMetaData 10.4 检索有关RDBMS功能性的信息 10.5 使用ResultSetMetaData 10.6 小结 第3部分 三层Web站点与JDBC 第11...

    Oracle数据库DBA面试题及答案_经典.docx

    5. 检查表结构的两种方法: 1. 使用DESCRIBE命令 2. 使用DBMS_METADATA.GET_DDL包 6. 查看数据库引擎报错的方法: 查看alert log。 7. truncate和delete命令的区别: truncate是DDL操作,它移动HWK,不需要...

    Java数据库编程宝典4

    10.2 使用DatabaseMetaData 10.3 检索与数据库相关的信息 10.3.1 在JTree中显示DatabaseMetaData 10.4 检索有关RDBMS功能性的信息 10.5 使用ResultSetMetaData 10.6 小结 第3部分 三层Web站点与JDBC 第11...

    2022年数据库工程师面试题答案.doc

    5. 给出两个检查表结构的方法是: * 方法一:使用 DESCRIBE 命令。 * 方法二:使用 DBMS_METADATA.GET_DDL 包。 6. 怎样查看数据库引擎的报错日志? * 解决方法:可以查看 alert log。 三、SQL 练习题 1. 编写 ...

    oracle面试题集锦.pdf

    可以使用 DESCRIBE 命令或 DBMS_METADATA.GET_DDL 包来检查表结构。 6. 查看数据库引擎报错的方法: 可以查看 alert log 来查看数据库引擎的报错。 7. truncate 和 delete 命令的不同: truncate 是 DDL 操作,不...

    我收集的oracle经典面试题.docx

    * 两种检查表结构的方法:DESCRIBE命令和DBMS_METADATA.GET_DDL包。 * 生成explain plan:可以使用utlxplan.sql和utlxplp.sql脚本。 * column可以用来区别V$视图和GV$视图:INST_ID指明集群环境中具体的某个instance...

    Oracle面试题集锦

    * 查看表结构的方法:DESCRIBE 命令和 DBMS_METADATA.GET_DDL * 查看数据库引擎的报错:alert log 四、索引和约束 * 使用索引的理由:快速访问表中的 data block * 比较 truncate 和 delete 命令:truncate 是 DDL...

    Oracle 50 道面试题及答案.docx

    有两种方法可以检查表结构:1、使用 DESCRIBE 命令;2、使用 DBMS_METADATA.GET_DDL 包。 5.查看数据库引擎的报错alert log 可以使用 alert log 查看数据库引擎的报错信息。 6.truncate 和 delete 命令 truncate...

    Oracle面试题常见的问题

    5. 给出两个检查表结构的方法 可以使用 DESCRIBE 命令或 DBMS_METADATA.GET_DDL 包。 6. 怎样查看数据库引擎的报错 可以查看 alert log。 7. 比较 truncate 和 delete 命令 truncate 和 delete 都可以用来删除...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    9.1.4. 混合使用“每个类分层结构一张表”和“每个子类一张表” 9.1.5. 每个具体类一张表(Table per concrete class) 9.1.6. Table per concrete class, using implicit polymorphism 9.1.7. 隐式多态和其他继承...

    oracle实验报告

    (4)SELECT语句中的WHERE条件可以包含PL/SQL块中定义的变量及表达式,但变量名不要同数据库表列名相同。 (5)在未使用显式游标的情况下,使用SELECT语句必须保证只有一条记录返回,否则会产生异常情况。 [例3-1] ...

    疯狂JAVA讲义

    9.1.3 使用BufferedReader获取键盘输入 318 9.2 系统相关 319 9.2.1 System类 319 9.2.2 Runtime类 321 9.3 常用类 322 9.3.1 Object类 322 9.3.2 String、StringBuffer和StringBuilder类 322 9.3.3 Math类 ...

    hibernate 体系结构与配置 参考文档(html)

    混合使用“每个类分层结构一张表”和“每个子类一张表” 9.1.5. 每个具体类一张表(Table per concrete class) 9.1.6. Table per concrete class, using implicit polymorphism 9.1.7. 隐式多态和其他继承映射...

    计算机英语试题及答案.pdf

    2. 数据库对象(database object):数据库对象是指数据库中的一个组件,例如表、视图或索引。 3. 硬件平台(hardware platform):硬件平台是指计算机的物理组件,例如处理器、存储器和输入/输出设备。 4. 搜索引擎...

Global site tag (gtag.js) - Google Analytics