获取数据库指定表的所有列及相应的信息:

(以MySQL和Oracle为例,其他类型的数据库接触不多,不做解释)

Connection接口中提供了DatabaseMetaData接口:

提供:getColumns()方法,该方法需要传进4个参数:

第一个是数据库名称,对于MySQL,则对应相应的数据库,对于Oracle来说,则是对应相应的数据库实例,可以不填,也可以直接使用Connection的实例对象中的getCatalog()方法返回的值填充;

第二个是模式,可以理解为数据库的登录名,而对于Oracle也可以理解成对该数据库操作的所有者的登录名。对于Oracle要特别注意,其登陆名必须是大写,不然的话是无法获取到相应的数据,而MySQL则不做强制要求。

第三个是表名称,用于传进想要查找的表

第四个是列类型,为空时,获取表对应的所有列,当不为空的时候获取该值的列的所有信息。

它返回一个ResultSet对象,有23列,详细的显示了表的类型:

TABLE_CAT String => 表类别(可为

null)

TABLE_SCHEM String => 表模式(可为

null)

TABLE_NAME String => 表名称

COLUMN_NAME String => 列名称

DATA_TYPE int => 来自

java.sql.Types 的 SQL 类型

TYPE_NAME String =>

数据源依赖的类型名称,对于 UDT,该类型名称是完全限定的

COLUMN_SIZE int => 列的大小。

BUFFER_LENGTH 未被使用。

DECIMAL_DIGITS int =>

小数部分的位数。对于 DECIMAL_DIGITS 不适用的数据类型,则返回 Null。

NUM_PREC_RADIX int => 基数(通常为

10 或 2)

NULLABLE int => 是否允许使用

NULL。

columnNoNulls - 可能不允许使用 NULL 值

columnNullable - 明确允许使用 NULL 值

columnNullableUnknown - 不知道是否可使用 null

REMARKS String => 描述列的注释(可为

null)

COLUMN_DEF String =>

该列的默认值,当值在单引号内时应被解释为一个字符串(可为 null)

SQL_DATA_TYPE int => 未使用

SQL_DATETIME_SUB int =>

未使用

CHAR_OCTET_LENGTH int => 对于

char 类型,该长度是列中的最大字节数

ORDINAL_POSITION int =>

表中的列的索引(从 1 开始)

IS_NULLABLE String => ISO

规则用于确定列是否包括 null。

YES --- 如果参数可以包括 NULL

NO --- 如果参数不可以包括 NULL

空字符串 --- 如果不知道参数是否可以包括 null

SCOPE_CATLOG String =>

表的类别,它是引用属性的作用域(如果 DATA_TYPE 不是 REF,则为 null)

SCOPE_SCHEMA String =>

表的模式,它是引用属性的作用域(如果 DATA_TYPE 不是 REF,则为 null)

SCOPE_TABLE String =>

表名称,它是引用属性的作用域(如果 DATA_TYPE 不是 REF,则为 null)

SOURCE_DATA_TYPE short =>

不同类型或用户生成 Ref 类型、来自 java.sql.Types 的 SQL 类型的源类型(如果 DATA_TYPE 不是

DISTINCT 或用户生成的 REF,则为 null)

IS_AUTOINCREMENT String =>

指示此列是否自动增加

YES --- 如果该列自动增加

NO --- 如果该列不自动增加

空字符串 --- 如果不能确定该列是否是自动增加参数

可根据需要使用

示例:

DatabaseMetaData metaData = conn.getMetaData();

// ResultSet rs = metaData.getColumns

(conn.getCatalog(), "SCOTT", "EMP", "SAL");

ResultSet rs =

metaData.getColumns(conn.getCatalog(), "root", "book",

"book_id");

while(rs.next()) { System.out.println(rs.getString("COLUMN_NAME"));

}

在使用的时候,我的建议是参数全部使用大写,这样可以屏蔽各个数据库的差异

oracle metadata .getcolumns,JDBC的那点事之DatabaseMetaData之获取表的所有列名相关推荐

  1. oracle 如何获取表的主键列名,如何获取表的所有列名

    获取表的主键列名 SQL  select   *   from   user_cons_columns      where   constraint_name   =   (select   con ...

  2. oracle metadata .getcolumns,通过DatabaseMetaData从Oracle中获取字段的注释

    今天在扩展ibator插件时,在生成model中每个field的注释时,想从oracle数据库中获取每个字段的comments作为注释.使用jdbc的支持,代码如下: ResultSet rs = ( ...

  3. JDBC元数据操作(一)-- DatabaseMetaData接口详解

    转自: https://blog.csdn.net/chen_zw/article/details/18816599 1. 前言     在JDBC技术规范中,提供了Connection,Statem ...

  4. Java--通过JDBC元数据获取表结构(ResultSetMetaData元数据的使用)

    最近在线上联调,由于我们没有数据库的可视化工具,和其他公司比对数据和表结构总是十分麻烦.后来我看到组长通过元数据来获取表结构和值.之后我自学了一下,感觉十分方便,分享给大家. jdbc的元数据有两类. ...

  5. 在Oracle中使用JDBC插入功能

    介绍 在本文中,我将显示一个示例,说明如何使用Oracle支持的JDBC批量插入功能,这些功能特定于Oracle. 有关为什么可能希望一般使用批量插入的更多详细信息,例如,在某些情况下需要考虑性能,请 ...

  6. oracle 对应的JDBC驱动 版本

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Oracle版本 jdk版本 推荐jar包 备注 Oracle 8i JDK 1.1.x class ...

  7. jdbc元数据DataBaseMetaData查询数据库表信息详解

    使用jdbc驱动的元数据metaData获取指定数据库的表信息和表字段信息. 测试请求:http://localhost:30001/api/tableInfoQuery/queryTableInfo ...

  8. 最新版本mysql jdbc驱动包获取表定义信息空指针异常处理方法

    在使用最新的mysql-connector-java 6.0.5时,获取表定义信息会抛出空指针异常: [2016-12-15 10:19:28][DEBUG][com.frameworkset.com ...

  9. mysql中jdbc的metadata_JDBC(九)DatabaseMetaData 数据库元数据

    通过java.sql.DatabaseMetaData 接口,我们能获取到数据库的列表.列等信息. DatabaseMetaData 接口包含了许多方法,这里值介绍常用的. 获取 DatabaseMe ...

最新文章

  1. TensorFlow 强制使用CPU
  2. python的用途实例-python进程池作用展示及实例解析
  3. MIDlet 移动开发
  4. 文献学习(part18)--Subspace Clustering
  5. how is home button implemented in Fiori launchpad
  6. P3306-[SDOI2013]随机数生成器【BSGS】
  7. 数据库创建索引有什么优点和缺点
  8. SELECTORS模块实现并发简单版FTP
  9. Atitit mybatis 配置 redis 集成 attilax总结 艾提拉总结 1.1. setting name=cacheEnabled v 1 1.2. Mapper文件 1 1.
  10. 几种数据可视化框架分析
  11. 【刘润五分钟商学院】156对对抗思考到平行思考
  12. poi excel 添加水印
  13. iOS打包成ipa包
  14. 开关电源共模电感和X电容的选取?
  15. 13.深入浅出:负反馈放大电路稳定性(自激振荡)——参考《模拟电子技术基础》清华大学华成英主讲
  16. 基于CANoen协议实现DSP系统与上位机CAN的通讯
  17. ADC或DAC中的LSB
  18. 位域外部申明_(外部)域特定语言的完整指南
  19. dialog使用(dialog使用方法)
  20. hge引擎配置登录器教程_Hge引擎程序+登录器配置器+配套工具+全套入门教程

热门文章

  1. linux x11vnc,X11vnc (简体中文)
  2. (个人翻译)Scrivener交互式手册中文版FowWindows 02核心理念
  3. 接口 CachedRowSet
  4. .Net Mvc validateRequest设置为false不起作用的解决方案
  5. r76800h和r76850hs区别
  6. 数据恢复笔记——NTFS文件系统
  7. 爱奇艺 linux版本好用,腾讯视频Linux版客户端,提供rpm和deb软件包下载
  8. Ubuntu安装RTX2080显卡驱动
  9. 【Octave】柱面投影简析
  10. ubuntu12.10 安装qq2012