jdbc读取数据库里的表信息之姊妹篇(读取字段和主键信息)
System.out.print(result.getObject("TABLE_SCHEM")+" ");?
System.out.print(result.getObject("TABLE_NAME")+" ");?
System.out.print(result.getObject("COLUMN_NAME")+" ");?
System.out.print(result.getObject("DATA_TYPE")+" ");?
System.out.print(result.getObject("TYPE_NAME")+" ");?
System.out.print(result.getObject("COLUMN_SIZE")+" ");?
System.out.print(result.getObject("BUFFER_LENGTH")+" ");?
System.out.print(result.getObject("DECIMAL_DIGITS")+" ");?
System.out.print(result.getObject("NUM_PREC_RADIX")+" ");?
System.out.print(result.getObject("NULLABLE")+" ");?
System.out.print(result.getObject("REMARKS")+" ");?
System.out.print(result.getObject("COLUMN_DEF")+" ");?
System.out.print(result.getObject("SQL_DATA_TYPE")+" ");?
System.out.print(result.getObject("SQL_DATETIME_SUB")+" ");?
System.out.print(result.getObject("CHAR_OCTET_LENGTH")+" ");?
System.out.print(result.getObject("ORDINAL_POSITION")+" ");?
System.out.print(result.getObject("IS_NULLABLE")+" ");?
System.out.print(result.getObject("SCOPE_CATALOG")+" ");?
System.out.print(result.getObject("SCOPE_SCHEMA")+" ");?
System.out.print(result.getObject("SCOPE_TABLE")+" ");?
System.out.print(result.getObject("SOURCE_DATA_TYPE")+" ");?
System.out.print(result.getObject("IS_AUTOINCREMENT")+" ");?
System.out.println();?
}
?
?
?
?
?
上面都是JDBC标准中的meta信息,具体的值,需要参考数据库jdbc厂商的实现。
?
?
?
?
?
除了读取基本的字段信息。DatabaseMetaData还提供了查找主键的接口
?
dbMeta.getPrimaryKeys(catalog, schema, tablename);?
?
这里的tablename就是你想要读取的数据库表
?
?
?
?
?
通过这个api我们可以查看一个表的主键信息。
?
?
?
比如
?
?
?
DatabaseMetaData dbMeta = conn.getMetaData();?
ResultSet pkRSet = dbMeta.getPrimaryKeys(null, null, "test");?
int column = pkRSet.getMetaData().getColumnCount();?
System.out.println(" =================== Primary Key ["+table+"] ================");?
while(pkRSet.next())?
{?
System.out.print(pkRSet.getObject("TABLE_CAT")+" ");?
System.out.print(pkRSet.getObject("TABLE_SCHEM")+" ");?
System.out.print(pkRSet.getObject("TABLE_NAME")+" ");?
System.out.print(pkRSet.getObject("COLUMN_NAME")+" ");?
System.out.print(pkRSet.getObject("KEY_SEQ")+" ");?
System.out.print(pkRSet.getObject("PK_NAME")+" ");?
System.out.println();?
}?
?
?
?
?
?
程序结果如下
?
?
?
CATLOG?SCHEMA?TABLE_NAME ?COLUMN_NAME ?KEY_SEQ ?PK_NAME
poc ? ? ? ?null ? ? ? ? test_parent ? id ? ? ? ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? PRIMARY?
?
?
?
这里是poc这个schema里的表test_parent的主键信息,有一个主键,主键的字段在id字段上。这里如果是复合主键的话,会有多个信息。
?
通过KEY_SEQ来反映出主键的顺序关系。
?
?
?
这里的PK_NAME是这个主键的名称,在Mysql里主键不指定都用这个PRIMARY代替了。在Oracle里可以测试一下不同之处。
?
?
?
?
?
在 这个文章里,我们一起看到了字段信息和主键信息。 外键信息,也是一个非常重要而且有意义的信息,可以反映出表之间的关系,所以databaseMetaData提供的方法更为细致。 在下一篇文章里,我们再继续给大家介绍--jdbc读取数据库里的表信息之姊妹篇(读取外键信息)。
?
?
?
?
?