可以使用ResultSetMetaData的方法获取ResultSetMeta对象。 ResultSet元数据包含ResultSet的元数据。 所谓元数据在英语中被解释为“数据自动数据”,直译为中文时为“与数据有关的数据”或“记述数据的数据”,实际上是记述并解释意思的数据。 以Result元数据为例,由于ResultSet作为表存在,因此get元数据包含表中所需的信息,如数据的字段名称、类型和数量。
ResultSetMetaData类主要有以下几种方法:
[ color=red ] resultsetmetadatarsmd=RS.get metadata (; [/color]
1.getColumCount ()方法
方法原型: [ color=red ] publicintgetcolumcount () throws SQLException。 [/color]
方法说明:返回所有字段的数量
返回值:所有字段的数量(整数)。
发生异常:如果数据库发生任何错误,则会发生SQLException对象。
2.getColumName ()方法
方法原型: [ color=red ] publicstringgetcolumname (int colum ) throws SQLException。 [/color]
方法说明:根据字段的索引值获取字段的名称。
参数: colum,字段的索引值,从1开始。
返回值:字段的名称(字符串)。
发生异常:如果数据库发生任何错误,则会发生SQLException对象。
3.getColumType ()方法
方法原型: [ color=red ] publicstringgetcolumtype (int colum ) throws SQLException。 [/color]
如何说明:根据字段的索引值获取字段类型,返回值的定义位于java.sql.Type类中。
参数: colum,字段的索引值,从1开始。
返回值:字符串。 SQL的数据类型在java.sql.Type类中定义。
发生异常:如果数据库发生任何错误,则会发生SQLException对象。
[b]方法概述[/b]
[table]
|字符串语言名称(int column ) )。
获取指定列的表目录名称。 |
| stringgetcolumnclassname (int column )。
如果通过调用方法ResultSet.getObject从列中检索值,则返回生成实例的Java类的完全限定名称。 |
|int getColumnCount () ) )
返回此ResultSet对象中的列数。 |
| intgetcolumndisplaysize (int column ) )。
指定列的最大标准宽度(以字符为单位)。 |
|字符串列(int column )。
获取用于打印输出和显示的指定列的推荐标题。 |
|字符串获取列名称(int列)。
获取指定列的名称。 |
|intgetcolumntype(intcolumn ) )。
获取指定列的SQL类型。 |
|字符串列计数类型名称(int column )。
获取指定列的数据库特定类型名称。 |
|集成(int column )。
获取指定列的小数位数。 |
|intgetscale(intcolumn )。
获取指定列的小数点右侧的位数。 |
|字符串获取方案(int column ) )。
获取指定列的表模式。 |
|字符串获取表名称(int column ) )。
获取指定列的名称。 |
| booleanisautoincrement (int column )。
指示是否对指定的列自动编号,以使列保持只读。 |
|布尔值敏感性(int column )。
指示列是否与大小写有关。 |
|booleaniscurrency(intcolumn ) ) ) ) ) )。
指示指定的列是否为哈希代码值。 |
| booleanisdefinitelywritable (int column ) )。
指示对指定列的写入是否成功。 |
|intisnullable(intcolumn ) )。
指示列的值是否可以为null。 |
|布尔型只读(int column ) )。
指示指定列是否显式不可写。 |
|Booleanissearchable(intcolumn )。
指示指定的列是否可用于where子句。 |
| booleanissigned (内部
olumn)指示指定列中的值是否带正负号。|
|boolean isWritable(int column)
指示在指定的列上进行写操作是否可以获得成功。|
[/table]
使用DatabaseMetaData则是用来获得数据库的信息,下面介绍这个类的使用方法。
DatabaseMetaData对象提供的是关于数据库的各种信息,这些信息包括:
1、 数据库与用户,数据库标识符以及函数与存储过程。
2、 数据库限制。
3、 数据库支持不支持的功能。
4、 架构、编目、表、列和视图等。
通过调用DatabaseMetaData的各种方法,程序可以动态的了解一个数据库。由于这个类中的方法非常的多那么就介绍几个常用的方法来给大家参考。
DatabaseMetaData实例的获取方法是,通过连接来获得的
[color=red]Connection conn = //创建的连接。
DatabaseMetaData dbmd = conn.getMetaData();[/color]
创建了这个实例,就可以使用他的方法来获取数据库得信息。首先是数据库中用户标识符的信息的获得,主要使用如下的方法:
[color=red]getDatabaseProductName()用以获得当前数据库是什么数据库。比如oracle,access等。返回的是字符串。
getDatabaseProductVersion()获得数据库的版本。返回的字符串。
getDriverVersion()获得驱动程序的版本。返回字符串。
supportsResultSetType(ResultSet.resultype)是判定是否支持这种结果集的类型。比如参数如果是Result.TYPE_FORWARD_ONLY,那就是判定是否支持,只能先前移动结果集的指针。返回值为boolean,true表示支持。[/color]
上面介绍的只是几个常用的方法,这个类中还有很多方法,可以到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语句。