jdbc获取mysql表数据类型_通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类...

http://www.cnblogs.com/lbangel/p/3487796.html

1、JDBC中通过MetaData来获取具体的表的相关信息。可以查询数据库中的有哪些表,表有哪些字段,字段的属性等等。MetaData中通过一系列getXXX函数,将这些信息存放到ResultSet里面,然后返回给用户。关于MetaData的说明网上也有不少,这里我只是从我自身学习的角度来记录一下简单使用JDBC以及获取数据表相关信息的方法。

DatabaseMetaData dbmd = con.getMetaData();

rs = dbmd.getColumns(con.getCatalog(), schema, tableName, null);

rs.getString(DATA_TYPE) // java.sql.Types 的 SQL 类型

rs.getString(COLUMN_SIZE) //列的大小。对于 char 或 date 类型,列的大小是最大字符数,对于 numeric 和 decimal 类型,列的大小就是精度。

rs.getString(DECIMAL_DIGITS) //小数部分的位数

2、下面就是我的JDBC下的获取表信息的代码了。我是以MySQL 5.0作为测试平台的。可以通过下面四个步骤来实现:

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

48304ba5e6f9fe08f3fa1abda7d326ab.png

每个列描述都有以下列:

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 --- 如果该列不自动增加

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

COLUMN_SIZE 列表示给定列的指定列大小。对于数值数据,这是最大精度。对于字符数据,这是字符长度。对于日期时间数据类型,这是 String 表示形式的字符长度(假定允许的最大小数秒组件的精度)。对于二进制数据,这是字节长度。对于 ROWID 数据类型,这是字节长度。对于列大小不适用的数据类型,则返回 Null。

参数:

catalog - 类别名称;它必须与存储在数据库中的类别名称匹配;该参数为 "" 表示获取没有类别的那些描述;为 null 则表示该类别名称不应该用于缩小搜索范围

schemaPattern - 模式名称的模式;它必须与存储在数据库中的模式名称匹配;该参数为 "" 表示获取没有模式的那些描述;为 null 则表示该模式名称不应该用于缩小搜索范围

tableNamePattern - 表名称模式;它必须与存储在数据库中的表名称匹配

columnNamePattern - 列名称模式;它必须与存储在数据库中的列名称匹配

48304ba5e6f9fe08f3fa1abda7d326ab.png

3、获取所有表

String catalog = conn.getCatalog(); //catalog 其实也就是数据库名

ResultSet tablesRe

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值