【开始】
现在有这么个需求,
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