oracle metadata .getcolumns,JDBC的那点事之DatabaseMetaData之获取表的所有列名
获取数据库指定表的所有列及相应的信息:
(以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之获取表的所有列名相关推荐
- oracle 如何获取表的主键列名,如何获取表的所有列名
获取表的主键列名 SQL select * from user_cons_columns where constraint_name = (select con ...
- oracle metadata .getcolumns,通过DatabaseMetaData从Oracle中获取字段的注释
今天在扩展ibator插件时,在生成model中每个field的注释时,想从oracle数据库中获取每个字段的comments作为注释.使用jdbc的支持,代码如下: ResultSet rs = ( ...
- JDBC元数据操作(一)-- DatabaseMetaData接口详解
转自: https://blog.csdn.net/chen_zw/article/details/18816599 1. 前言 在JDBC技术规范中,提供了Connection,Statem ...
- Java--通过JDBC元数据获取表结构(ResultSetMetaData元数据的使用)
最近在线上联调,由于我们没有数据库的可视化工具,和其他公司比对数据和表结构总是十分麻烦.后来我看到组长通过元数据来获取表结构和值.之后我自学了一下,感觉十分方便,分享给大家. jdbc的元数据有两类. ...
- 在Oracle中使用JDBC插入功能
介绍 在本文中,我将显示一个示例,说明如何使用Oracle支持的JDBC批量插入功能,这些功能特定于Oracle. 有关为什么可能希望一般使用批量插入的更多详细信息,例如,在某些情况下需要考虑性能,请 ...
- oracle 对应的JDBC驱动 版本
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Oracle版本 jdk版本 推荐jar包 备注 Oracle 8i JDK 1.1.x class ...
- jdbc元数据DataBaseMetaData查询数据库表信息详解
使用jdbc驱动的元数据metaData获取指定数据库的表信息和表字段信息. 测试请求:http://localhost:30001/api/tableInfoQuery/queryTableInfo ...
- 最新版本mysql jdbc驱动包获取表定义信息空指针异常处理方法
在使用最新的mysql-connector-java 6.0.5时,获取表定义信息会抛出空指针异常: [2016-12-15 10:19:28][DEBUG][com.frameworkset.com ...
- mysql中jdbc的metadata_JDBC(九)DatabaseMetaData 数据库元数据
通过java.sql.DatabaseMetaData 接口,我们能获取到数据库的列表.列等信息. DatabaseMetaData 接口包含了许多方法,这里值介绍常用的. 获取 DatabaseMe ...
最新文章
- TensorFlow 强制使用CPU
- python的用途实例-python进程池作用展示及实例解析
- MIDlet 移动开发
- 文献学习(part18)--Subspace Clustering
- how is home button implemented in Fiori launchpad
- P3306-[SDOI2013]随机数生成器【BSGS】
- 数据库创建索引有什么优点和缺点
- SELECTORS模块实现并发简单版FTP
- Atitit mybatis 配置 redis 集成 attilax总结 艾提拉总结 1.1. setting name=cacheEnabled v	1 1.2. Mapper文件	1 1.
- 几种数据可视化框架分析
- 【刘润五分钟商学院】156对对抗思考到平行思考
- poi excel 添加水印
- iOS打包成ipa包
- 开关电源共模电感和X电容的选取?
- 13.深入浅出:负反馈放大电路稳定性(自激振荡)——参考《模拟电子技术基础》清华大学华成英主讲
- 基于CANoen协议实现DSP系统与上位机CAN的通讯
- ADC或DAC中的LSB
- 位域外部申明_(外部)域特定语言的完整指南
- dialog使用(dialog使用方法)
- hge引擎配置登录器教程_Hge引擎程序+登录器配置器+配套工具+全套入门教程