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语句。

ResultSetMetaData类的介绍的更多相关文章

  1. oc-12-NSString 类简单介绍及用法

    // 11-[掌握]NSString 类简单介绍及用法 #import <Foundation/Foundation.h> int main(int argc, const char * ...

  2. 【Entity Framework】初级篇--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager类的介绍

    本节,简单的介绍EF中的ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager这个几个比较重要的类,它们都位于System.Data ...

  3. Entity Framework 学习初级篇2--ObjectContext类的介绍

    转自:http://www.cnblogs.com/Tally/archive/2012/09/14/2685014.html 本节,简单的介绍EF中的ObjectContext.ObjectQuer ...

  4. CImage类的介绍与使用

    CImage类的介绍与使用 程序代码下载处:http://download.csdn.net/source/2098910 下载处:http://hi.baidu.com/wangleitongxin ...

  5. Entity Framework 学习初级篇2--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager类的介绍

    本节,简单的介绍EF中的ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager这个几个比较重要的类,它们都位于System.Data ...

  6. JdbcTemolate类的介绍<一>

    JdbcTemolate类的介绍 JdbcTemplate是Spring JDBC的核心类,封装了常见的JDBC的用法,同时尽量避免常见的错误.该类简化JDBC的操作,我们只需要书写提供SQL的代码和 ...

  7. 【转】Spring学习---Bean配置的三种方式(XML、注解、Java类)介绍与对比

    [原文]https://www.toutiao.com/i6594205115605844493/ Spring学习Bean配置的三种方式(XML.注解.Java类)介绍与对比 本文将详细介绍Spri ...

  8. 设置定时任务(Timer类的介绍)

    设置定时任务(Timer类的介绍) 在我们的很多项目中,我们都须要用到定时任务,因此想借此博文来对定时任务进行一个介绍. 设置定时任务过程例如以下: 先new一个Timer对象 Timer timer ...

  9. java基础-BigDecimal类常用方法介绍

    java基础-BigDecimal类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigDecimal类概述 我们知道浮点数的计算结果是未知的.原因是计算机二进制 ...

随机推荐

  1. Python MySQLdb的execute和executemany的使用

    如果使用executemany对数据进行批量插入的话,要注意一下事项: conn = MySQLdb.connect(host = “localhost”, user = “root”, passwd ...

  2. 【Luogu】P2827蚯蚓(堆转队列)

    按照国际惯例先发题目链接‍ woc从4月就开始做这sb题.最开始30分升到65分不管了,直到最近几天升到85分,再到今天AC.激动的心情自然是那些一遍就A或者一小时以内就A的神犇难以想象的. 下面说说 ...

  3. USACO 2.1 The Castle

    题目大意:给你一个城堡让你求有多少房间,最大房间有多大,敲掉一堵墙后最大的房间有多大,敲掉那座墙 思路:比较恶心的bfs题,反正就是bfs使劲敲 /*{ ID:a4298442 PROB:castle ...

  4. 网页抓取小工具(IE法)

    网页抓取小工具(IE法)—— 吴姐 http://club.excelhome.net/thread-1095707-1-1.html 用IE提取网页资料的好处在于:所见即所得,网页上能看到的信息一般 ...

  5. Linux(8):linux三剑客sed和awk & Shell 编程(1)

    linux 三剑客 之 sed # sed 是什么? # sed : 字符流编辑器 Stream Editor: sed 擅长 替换.取行等 # sed 的功能与版本: 处理纯文本文件.日志.配置文件 ...

  6. for 循环进化史

    ECMAScript 6已经逐渐普及,经过二十多年的改进,很多功能也有了更成熟的语句,比如 for 循环 这篇博客将介绍一下从最初的 for 循环,到 ES6 的 for-of 等四种遍历方法 先定义 ...

  7. UNIDAC如何驱动MSSQL2000

    UNIDAC如何驱动MSSQL2000 如下图,PROVIDER必须设置为PRSQL.默认的PRAUTO,如果操作系统是XP可以,如果是WIN7以上的,不可以. 原因是MSSQL NATIVE 11已 ...

  8. django的form验证机制

    今天遇到了一个奇怪的问题,django中formview一直返回200,但是却没有执行form_valid方法,然后在其中加了一个form_invalid方法: class StudentRegist ...

  9. CF 558B(Amr and The Large Array-计数)

    B. Amr and The Large Array time limit per test 1 second memory limit per test 256 megabytes input st ...

  10. C#如何设置控件水平对齐,垂直对齐

    如果要设置一些控件垂直对齐,点击这个按钮 如果要设置水平对齐,则点击这个按钮,选中控件之后点击左对齐(多个按钮都试下吧,总归能对齐到你要的效果的)