利用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语句。
分享到:
相关推荐
DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口,本文只讲解DatabaseMetaData接口获取元数据的方法。 文章地址:http://blog.csdn.net/chen_zw/article/details/18816599
Java 语言中经常使用的数据库操作对象和方法整合,主要包括 DatabaseMetaData、ResultSet、ResultSetMetaData 等对象。 DatabaseMetaData 对象 DatabaseMetaData 对象提供了关于整个数据库的信息,包括表名、表的...
在Java的JDBC(Java Database Connectivity)中,`DatabaseMetaData`和`ResultSetMetaData`是两个非常重要的接口,它们提供了获取数据库元数据和结果集元数据的功能。元数据是指关于数据的数据,例如数据库的表结构...
JTDS完全与JDBC 3.0兼容,支持只向前的,和可滚动/可更新的结果集(ResultSets)中并行(完全独立)语句,并且可实施所有databasemetadata和resultsetmetadata方法。 文件有说明spring+hibernate+c3p0+jtds的配置
在案例中,第16行代码`conn.getMetaData()`创建了`DatabaseMetaData`对象`dmd`,该对象提供了多种方法来获取数据库的相关信息。 1. **获取数据库原始信息**: - `getURL()`: 这个方法用于获取与数据库建立连接的...
在元数据方面,DM8提供了ResultSetMetaData、DatabaseMetaData和ParameterMetaData等信息。在分布式事务支持方面,DM8提供了XADataSource、XAConnection、XAResource和Xid等技术支持。 总的来说,DM8数据库是一款...
24. **getMetaData()方法**: 获取 DatabaseMetaData 对象的方法是通过 Connection 接口的 getMetaData() 方法创建的。 25. **supportsExternalTables()方法**: 用于检查数据库是否支持外部表。 26. **...
7. **JDBC API的主要接口和类**:包括Driver、Connection、Statement、PreparedStatement、CallableStatement、ResultSet、ResultSetMetaData、DatabaseMetaData等,每个都有其特定的作用和功能。 8. **异常处理**...
- 可以通过`DatabaseMetaData`类的方法`supportsPositionedDelete()`和`supportsPositionedUpdate()`来检查数据库是否支持这些功能。 2. **使用场景:** - 通常在需要根据游标位置进行删除或更新操作时使用。 - ...
ResultSet 接口是用来接收 select 语句返回的查寻结果的,DatabaseMetaData 是数据库元数据,ResultSetMetaData 是结果集元数据,Types 是特殊的类,只包含静态的常量,代表 jdbc 类型。 jdbc 的应用步骤包括注册...
7. **JDBC API的主要类和接口**:包括Driver、Connection、Statement、PreparedStatement、CallableStatement、ResultSet、ResultSetMetaData、DatabaseMetaData等,它们构成了JDBC的核心。 在"01_传智播客JDBC_...
其中,`Connection`、`Driver`、`DriverManager`、`Statement`、`PreparedStatement`、`CallableStatement`、`ResultSet`、`ResultSetMetaData`和`DatabaseMetaData`是关键的类和接口。例如,`Connection`类用于建立...
7. 元数据接口:java.sql.DatabaseMetaData、java.sql.ResultSetMetaData 四、Spring Boot整合 Spring Boot提供了对JDBC的支持,使得开发者可以轻松地与数据库集成。在Spring Boot中,我们可以使用Spring JDBC模块...
函数通过`DatabaseMetaData`接口的`getTables()`方法获取所有表的信息,再用`getColumns()`方法来获取每个表的列信息。循环遍历结果集,打印出表名和列的相关信息。这里涉及到的`schema-name`参数可以指定为特定的...
7. 使用DatabaseMetaData对象可以获取数据库的元数据,例如表名、列名等。 8. 使用ResultSet对象可以获取查询结果,例如执行SHOW CREATE TABLE语句可以获取表结构。 9. 使用Statement对象可以执行SQL语句,例如...
数据库的元数据(Metadata)在Java中可以通过DatabaseMetaData接口获取,它可以提供关于数据库模式的信息,如表、列、索引等。ParameterMetaData和ResultSetMetaData分别用于获取SQL语句参数和结果集的元数据。 ...
8. **DatabaseMetaData**:获取关于数据库的信息,如表结构、列信息等。 9. **ResultSetMetaData**:提供关于结果集列的信息。 10. **Types**:定义SQL数据类型的常量。 **JDBC 2.0及以后的增强特性:** 1. **数据...
`DatabaseMetaData`接口提供了一系列方法来获取这些信息。 **事务(Transaction)** 事务是数据库操作的基本单位,确保数据的一致性和完整性。在JDBC中,可以通过Connection对象的`setAutoCommit(false)`禁用自动...