`

ResultSetMetaData 、DatabaseMetaData中的方法介绍

阅读更多
利用ResultSet的getMetaData的方法可以获得ResultSetMeta对象,而ResultSetMetaData存储了 ResultSet的MetaData。所谓的MetaData在英文中的解释为“Data about Data”,直译成中文则为“有关数据的数据”或者“描述数据的数据”,实际上就是描述及解释含义的数据。以Result的MetaData为例,ResultSet是以表格的形式存在,所以getMetaData就包括了数据的字段名称、类型以及数目等表格所必须具备的信息。
在 ResultSetMetaData类中主要有一下几个方法。

ResultSetMetaData rsmd=rs.getMetaData();

1.getColumCount()方法

方法的原型:public int getColumCount() throws SQLException。

方法说明:返回所有字段的数目

返回值:所有字段的数目(整数)。

异常产生:数据库发生任何的错误,则会产生一个SQLException对象。

2.getColumName()方法

方法的原型:public String getColumName (int colum) throws SQLException。

方法说明:根据字段的索引值取得字段的名称。

参数:colum,字段的索引值,从1开始。

返回值:字段的名称(字符串)。

异常产生:数据库发生任何的错误,则会产生一个SQLException对象。

3.getColumType()方法

方法的原型:public String getColumType (int colum) throws SQLException。

方法说明:根据字段的索引值取得字段的类型,返回值的定义在java.sql.Type类。

参数:colum,字段的索引值,从1开始。

返回值:字符串,SQL的数据类型定义在java.sql.Type类。

异常产生:数据库发生任何的错误,则会产生一个SQLException对象。

方法摘要
String getCatalogName(int column)           获取指定列的表目录名称。
String getColumnClassName(int column)           如果调用方法 ResultSet.getObject 从列中检索值,则返回构造其实例的 Java 类的完全限定名称。
int getColumnCount()           返回此 ResultSet 对象中的列数。
int getColumnDisplaySize(int column)           指示指定列的最大标准宽度,以字符为单位。
String getColumnLabel(int column)           获取用于打印输出和显示的指定列的建议标题。
String getColumnName(int column)           获取指定列的名称。
int getColumnType(int column)           检索指定列的 SQL 类型。
String getColumnTypeName(int column)           检索指定列的数据库特定的类型名称。
int getPrecision(int column)           获取指定列的小数位数。
int getScale(int column)           获取指定列的小数点右边的位数。
String getSchemaName(int column)           获取指定列的表模式。
String getTableName(int column)           获取指定列的名称。
boolean isAutoIncrement(int column)           指示是否自动为指定列进行编号,这样这些列仍然是只读的。
boolean isCaseSensitive(int column)           指示列的大小写是否有关系。
boolean isCurrency(int column)           指示指定的列是否是一个哈希代码值。
boolean isDefinitelyWritable(int column)           指示在指定的列上进行写操作是否明确可以获得成功。
int isNullable(int column)           指示指定列中的值是否可以为 null。
boolean isReadOnly(int column)           指示指定的列是否明确不可写入。
boolean isSearchable(int column)           指示是否可以在 where 子句中使用指定的列。
boolean isSigned(int column)           指示指定列中的值是否带正负号。
boolean isWritable(int column)           指示在指定的列上进行写操作是否可以获得成功。



使用DatabaseMetaData则是用来获得数据库的信息,下面介绍这个类的使用方法。

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语句。
分享到:
评论

相关推荐

    JDBC元数据操作--DatabaseMetaData接口Demo

    DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口,本文只讲解DatabaseMetaData接口获取元数据的方法。 文章地址:http://blog.csdn.net/chen_zw/article/details/18816599

    jtdsJDBC Driver

    JTDS完全与JDBC 3.0兼容,支持只向前的,和可滚动/可更新的结果集(ResultSets)中并行(完全独立)语句,并且可实施所有databasemetadata和resultsetmetadata方法。 文件有说明spring+hibernate+c3p0+jtds的配置

    Java_Servlet_StudentInfo

    数据库元数据 DatabaseMetaData 参数元数据 ParameterMetaData 结果集元数据 ResultSetMetaData 2 MVC 设计模式 ​ MVC 模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本...

    Java数据库编程宝典2

    10.3.1 在JTree中显示DatabaseMetaData 10.4 检索有关RDBMS功能性的信息 10.5 使用ResultSetMetaData 10.6 小结 第3部分 三层Web站点与JDBC 第11章 构建会员Web站点 11.1 设计一个多层系统 11.2 功能性...

    Java数据库编程宝典4

    10.3.1 在JTree中显示DatabaseMetaData 10.4 检索有关RDBMS功能性的信息 10.5 使用ResultSetMetaData 10.6 小结 第3部分 三层Web站点与JDBC 第11章 构建会员Web站点 11.1 设计一个多层系统 11.2 功能性...

    Java数据库编程宝典1

    10.3.1 在JTree中显示DatabaseMetaData 10.4 检索有关RDBMS功能性的信息 10.5 使用ResultSetMetaData 10.6 小结 第3部分 三层Web站点与JDBC 第11章 构建会员Web站点 11.1 设计一个多层系统 11.2 功能性...

    Java数据库编程宝典3

    10.3.1 在JTree中显示DatabaseMetaData 10.4 检索有关RDBMS功能性的信息 10.5 使用ResultSetMetaData 10.6 小结 第3部分 三层Web站点与JDBC 第11章 构建会员Web站点 11.1 设计一个多层系统 11.2 功能性...

    国外java源码网站-mongodb-jdbc-driver:MongoDBJDBC驱动程序|DbSchemaMongoDB设计器

    国外java源码网站 MongoDb JDBC 驱动程序 | DbSchema MongoDB 设计器 驱动是为大家编写的,需要一个MongoDb JDBC驱动。...中添加参数expand=true将为结果文档中的每个键在结果集中创建一...从DatabaseMetaData.getTables()

    数据库工具类DatabaseUtil.java

    * Description: 将大部分的数据库操作放入这个类中, 包括数据库连接的建立, 自动释放等. * * * @author beansoft 日期: 2004年04月 * @version 2.0 */ public class DatabaseUtil { /** 数据库连接 */ ...

    疯狂JAVA讲义

    2.2 UML(统一建模语言)介绍 29 2.2.1 用例图 30 2.2.2 类图 31 2.2.3 组件图 33 2.2.4 部署图 33 2.2.5 顺序图 34 2.2.6 活动图 34 2.2.7 状态机图 36 2.3 Java的面向对象特征 36 2.3.1 一切都是对象 37 ...

    Servlet查询数据库案例--Query(java源码)

    ResultSetMetaData metadata = results.getMetaData(); // How many columns are there in the results? int numcols = metadata.getColumnCount(); // Begin a table, and output a header row of column ...

    iBatis-设置缓存模式-Java源码(下载)

    ResultSetMetaData metadata = rs.getMetaData(); for (int i = 0; i < metadata.getColumnCount(); i++) { System.out.print("\t"+ metadata.getColumnLabel(i + 1)); } System.out.println("\n--------...

Global site tag (gtag.js) - Google Analytics