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 ConfigParser 学习

    [安装] ConfigParser 是解析配置文件的第三方库,需要安装 pip install ConfigParser   [介绍] ConfigParser 是用来读取配置文件(可以是.conf, ...

  2. BZOJ 4824 [Cqoi2017]老C的键盘 ——树形DP

    每一个限制条件相当于一条有向边, 忽略边的方向,就成了一道裸的树形DP题 同BZOJ3167 唯一的区别就是这个$O(n^3)$能过 #include <map> #include < ...

  3. BZOJ 3926 [Zjoi2015]诸神眷顾的幻想乡 ——广义后缀自动机

    神奇的性质,叶子节点不超过20个. 然后把这些节点提出来构成一颗新树,那么这些树恰好包含了所有的情况. 所以直接广义后缀自动机. 然后统计本质不同的字符串就很简单显然了. #include <c ...

  4. Bzoj1083 1083: [SCOI2005]繁忙的都市【MST】

    大水题,真不知道出题者是怎么把这么水的题出的这么长的TAT 其实这题在于考语文水平,一共三个要求,前两个要求意思就是要选出的道路是树形的,最后一个要求就是要权值最小,于是整个题意说白了就是求一棵MST ...

  5. BZOJ2288 【POJ Challenge】生日礼物 【堆 + 链表】

    题目 ftiasch 18岁生日的时候,lqp18_31给她看了一个神奇的序列 A1, A2, ..., AN. 她被允许选择不超过 M 个连续的部分作为自己的生日礼物. 自然地,ftiasch想要知 ...

  6. 刷题总结——动态逆序对(bzoj3295)

    题目: Description 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素 ...

  7. 把项目变成intellij idea和eclipse项目

    就通过maven把它build成一个IDE项目,执行以下命令,打开CMD: $ cd 项目名 $ mvn eclipse:eclipse or mvn idea:idea

  8. LA 2218 半平面交

     题目大意:n名选手参加铁人三项赛,比赛按照选手在三个赛段中所用的总时间排定名次.已知每名选手在三个项目中的速度Ui.Vi.Wi.问对于选手i,能否通过适当的安排三个赛段的长度(但每个赛段的长度都不能 ...

  9. css3鼠标点击穿透--摘抄

    有些时候网页中用到了一些绝对定位的Div,因为需要事先这个Div是隐藏的,但是它所在的位置会遮挡住鼠标点击事件.这个时候可以用CCS3中的pointer-events属性来解决.   //穿透该层 p ...

  10. Scrapy学习-1-入门

    基础知识 爬虫发展史   爬虫去重 1. 存储到数据库中 存取速度慢 2. 存储到内存中的集合里,内存占用十分大 当爬取数据有1亿条时 1*10**8*2Byte*50str_len/1024/102 ...