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. IntelliJ IDEA 代码提示快捷键

    1.写代码时用Alt-Insert(Code|Generate…)可以创建类里面任何字段的getter与setter方法. mac版 是ctrl+enter 2.CodeCompletion(代码完成 ...

  2. 2013 Asia acm Hangzhou Regional Contest 杭州现场赛

     B Stealing Harry Potter's Precious 题目大意:给定一个n*m的地图,某些点可以走,某些点可以走某些点不可以走,给定一个起点,又给出了k个点k<=4,要求从起点 ...

  3. 关于时区、时间戳引起的bug理解

    时间戳定义:0时区1970年1月1日到现在的毫秒数,所以全世界同一时刻的时间戳都是一样的. 北京时间对应时间戳=unix(0时区对应时间的时间戳)-8*60*60*1000(8小时的毫秒数)----- ...

  4. 【Codevs1907】方格取数3(最小割)

    题意:在一个有m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法. n,m<=30 思路:如果 ...

  5. SSH: Transferred 0 file(s) 解决

    Jenkins搭建过程中,使用 Publish Over SSH 插件.发生 SSH: Transferred 0 file(s). 百度.google了几个小时,终于找到答案,特此记录. 配置如下: ...

  6. koa2 从入门到进阶之路 (一)

    首先我们先来了解一下 Koa 是什么,https://koa.bootcss.com/,这是 Koa 的官方网站,映入眼帘的第一句就是 Koa -- 基于 Node.js 平台的下一代 web 开发框 ...

  7. 洛谷——P2074 危险区域

    P2074 危险区域 题目背景 一个恐怖组织在一座城市中安放了定时炸弹,其威力巨大,现在这里的警长想知道最坏的情况下会有多少街区受威胁. 题目描述 在一个城市有N*M个街区,每个街区由坐标描述,如图所 ...

  8. mysql中进行删除操作时用到not in 导致删除不成功

    delete from tb_news where id not in ( select max(id) From tb_news Group By title ) 刚开始用这条语句删除一直不成功 然 ...

  9. 内核调试 SystemTap

    http://www.cnblogs.com/wangkangluo1/archive/2012/06/26/2562971.html   相关技术:utrace, probe, ftrace, dt ...

  10. Spring自带mock测试Controller

    原文:http://blog.csdn.net/yin_jw/article/details/24726941 准备SpringMVC环境 注意:使用mock测试需要引入spring-test包 Ba ...