JDBC 获取表中列信息

Java查询表结构

【开始】

现在有这么个需求,

1.知道一个表名

2.通过表名获取表中所有的列

3.知道列的一些信息

4.包括列名,是否可空,是否唯一,是否主键,数据类型,注释


【方法】

主要使用两个方法:

ResultSet colrs = con.getMetaData().getColumns(null, "%", tableName, "%");

ResultSet rs = con.getMetaData().getIndexInfo("db_com", null, "t_ucenter_menu", true, false);

其中,

第一个方法可以获取列的大部分信息,

第二个方法可以获取列是否唯一,因为是否唯一已经不是列的信息,而是一种约束


【代码1】

		ResultSet colrs = con.getMetaData().getColumns(null, "%", tableName, "%");
		while(colrs.next()){
			System.out.println("TABLE_CAT" + "===" + colrs.getString("TABLE_CAT"));
			System.out.println("TABLE_SCHEM" + "===" + colrs.getString("TABLE_SCHEM"));
			System.out.println("TABLE_NAME" + "===" + colrs.getString("TABLE_NAME"));
			System.out.println("COLUMN_NAME" + "===" + colrs.getString("COLUMN_NAME"));
			System.out.println("DATA_TYPE" + "===" + colrs.getString("DATA_TYPE"));
			System.out.println("TYPE_NAME" + "===" + colrs.getString("TYPE_NAME"));
			System.out.println("COLUMN_SIZE" + "===" + colrs.getString("COLUMN_SIZE"));
			System.out.println("BUFFER_LENGTH" + "===" + colrs.getString("BUFFER_LENGTH"));
			System.out.println("DECIMAL_DIGITS" + "===" + colrs.getString("DECIMAL_DIGITS"));
			System.out.println("NUM_PREC_RADIX" + "===" + colrs.getString("NUM_PREC_RADIX"));
			System.out.println("NULLABLE" + "===" + colrs.getString("NULLABLE"));
			System.out.println("REMARKS" + "===" + colrs.getString("REMARKS"));
			System.out.println("COLUMN_DEF" + "===" + colrs.getString("COLUMN_DEF"));
			System.out.println("SQL_DATA_TYPE" + "===" + colrs.getString("SQL_DATA_TYPE"));
			System.out.println("SQL_DATETIME_SUB" + "===" + colrs.getString("SQL_DATETIME_SUB"));
			System.out.println("CHAR_OCTET_LENGTH" + "===" + colrs.getString("CHAR_OCTET_LENGTH"));
			System.out.println("ORDINAL_POSITION" + "===" + colrs.getString("ORDINAL_POSITION"));
			System.out.println("IS_NULLABLE" + "===" + colrs.getString("IS_NULLABLE"));
			System.out.println("SCOPE_CATALOG" + "===" + colrs.getString("SCOPE_CATALOG"));
			System.out.println("SCOPE_SCHEMA" + "===" + colrs.getString("SCOPE_SCHEMA"));
			System.out.println("SCOPE_TABLE" + "===" + colrs.getString("SCOPE_TABLE"));
			System.out.println("SOURCE_DATA_TYPE" + "===" + colrs.getString("SOURCE_DATA_TYPE"));
			System.out.println("IS_AUTOINCREMENT" + "===" + colrs.getString("IS_AUTOINCREMENT"));
		}

【结果1】

TABLE_CAT===db_com
TABLE_SCHEM===null
TABLE_NAME===t_ucenter_menu
COLUMN_NAME===id
DATA_TYPE===4
TYPE_NAME===INT
COLUMN_SIZE===10
BUFFER_LENGTH===65535
DECIMAL_DIGITS===0
NUM_PREC_RADIX===10
NULLABLE===0
REMARKS===
COLUMN_DEF===null
SQL_DATA_TYPE===0
SQL_DATETIME_SUB===0
CHAR_OCTET_LENGTH===null
ORDINAL_POSITION===1
IS_NULLABLE===NO
SCOPE_CATALOG===null
SCOPE_SCHEMA===null
SCOPE_TABLE===null
SOURCE_DATA_TYPE===null
IS_AUTOINCREMENT===YES

【代码2】

		ResultSet rs = con.getMetaData().getIndexInfo("db_com", null, "t_ucenter_menu", true, false);
		while(rs.next()){
			System.out.println("TABLE_CAT" + "===" + rs.getString("TABLE_CAT"));
			System.out.println("TABLE_SCHEM" + "===" + rs.getString("TABLE_SCHEM"));
			System.out.println("TABLE_NAME" + "===" + rs.getString("TABLE_NAME"));
			System.out.println("NON_UNIQUE" + "===" + rs.getString("NON_UNIQUE"));
			System.out.println("INDEX_QUALIFIER" + "===" + rs.getString("INDEX_QUALIFIER"));
			System.out.println("INDEX_NAME" + "===" + rs.getString("INDEX_NAME"));
			System.out.println("TYPE" + "===" + rs.getString("TYPE"));
			System.out.println("ORDINAL_POSITION" + "===" + rs.getString("ORDINAL_POSITION"));
			System.out.println("COLUMN_NAME" + "===" + rs.getString("COLUMN_NAME"));
			System.out.println("ASC_OR_DESC" + "===" + rs.getString("ASC_OR_DESC"));
			System.out.println("CARDINALITY" + "===" + rs.getString("CARDINALITY"));
			System.out.println("PAGES" + "===" + rs.getString("PAGES"));
			System.out.println("FILTER_CONDITION" + "===" + rs.getString("FILTER_CONDITION"));
		}


【结果2】

TABLE_CAT===db_com
TABLE_SCHEM===null
TABLE_NAME===t_ucenter_menu
NON_UNIQUE===false
INDEX_QUALIFIER===
INDEX_NAME===PRIMARY
TYPE===3
ORDINAL_POSITION===1
COLUMN_NAME===id
ASC_OR_DESC===A
CARDINALITY===4
PAGES===0
FILTER_CONDITION===null

【整理】

自己整理以上有用的内容吧


【api】

需要api可以看这个在线的java api

http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uikoo9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值