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. CentOS下SWAP分区建立及释放内存详解

    方法一: 一.查看系统当前的分区情况: >free -m 二.创建用于交换分区的文件: >dd if=/dev/zero of=/whatever/swap bs=block_size ( ...

  2. Java中的自动类型转换

    Java里所有的数值型变量可以进行类型转换,这个大家都知道,应该不需要详细解释为什么. 2 在说明自动类型转换之前必须理解这样一个原则“表数范围小的可以向表数范围大的进行自动类型转换” 3 关于jav ...

  3. docker管理工具推荐(linux和windows)

    1.windows. 下载dokcer toolbox即可 2.linux 推荐rancher.安装链接参考:http://www.kaimingwan.com/post/rong-qi-yu-ron ...

  4. LA 4973异面线段

    题目大意:给两条线段求他们间的最小距离的平方(以分数形式输出). 贴个模版吧!太抽象了. #include<cstdio> #include<cmath> #include&l ...

  5. Codevs 1299 切水果 水一发

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 简单的说,一共N个水果排成一排,切M次,每次切[L,R]区间的所有水果(可能有的 ...

  6. COdevs 天梯 水题系列

    1203 判断浮点数是否相等 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题目描述 Description 给出两个浮点数,请你判断这两个浮点数是否相等 输入 ...

  7. 关于SIP一些总结

    SIP(session Initiation protocol)会话初始协议,是应用层信令控制协议,主要应用于创建.修改.释放多媒体会话. 一般而言,SIP只负责不同UE之间的协商与通信,比如媒体能力 ...

  8. react 起手式

    http://blog.csdn.net/zhouzhiande/article/details/52349344 http://blog.csdn.net/zhouzhiande/article/d ...

  9. Info.plist 的字段解释

    bundle字段 这些字段名都是XML中的名称,在xcode的属性编辑器中,名字并不相同 bundle目录中的属性列表详细描述了有关该bundle的信息.Finder和一些系统API在一些情况下会使用 ...

  10. 【java】java base64编码与解码

    参考地址:http://blog.csdn.net/zhou_kapenter/article/details/62890262 要求:JDK1.8+ 使用java原生工具类即可实现 [这里展示字符串 ...