resultsetmetadata
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对象提供的是关于数据库的各种信息,这些信息包括:
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语句。
相关阅读
今天写页面的时候,发生了离奇的错误,明明语句在数据库中执行能查出6个字段,但是返回数据时只剩5个了,检查了好多遍代码,终于发现Result