读书人

jdbc读取数据库里的表信息之续篇(读取

发布时间: 2013-01-26 13:47:02 作者: rapoo

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读取数据库里的表信息之姊妹篇(读取外键信息)。

?

?

?

?

?

读书人网 >其他数据库

热点推荐