- 作者: 三十而立
- 时间:2009年10月09日 4:42:59
- 本文出自 “inthirties(三十而立)”博客,转载请务必注明作者和保留出处http://blog.csdn.net/inthirties/archive/2009/10/09/4646557.aspx
我们使用jdbc除了要对我们的数据进行操作,有时候对表和数据库的信息也可能有时需要一定的操作的。这里我们就会使用到
DatabaseMetaData dbMeta = conn.getMetaData(); 这个重要的meta类
根据这里的DatabaseMetaData类,我们不仅可以拿到基本的database的信息,还可以获得很多数据库内部的对象的信息,这里颇有些类似我们常说的数据库字典表哟。
下面我们就一下看看我们可以读到的信息
可读信息之一-----表信息
读取所有的表
dbMeta.getTables(catalog, schemaPattern, tableNamePattern, types)
这个API就可以获得所有的表的信息。这里的catalog和schemaPattern, tablenamePattern都可以为null,就是读取当前的schema的概念,由于每个数据库里对schema的概念都不尽相同,所以这里需要根据你具体的数据库来进行调试。
我这里是mysql上的一段代码如下
引用:
ResultSet tblRSet = dbMeta.getTables(null, null, null, null);
System.out.println(" ********************* All Tables *********************");
while(tblRSet.next())
{
System.out.print(tblRSet.getObject("TABLE_CAT")+" ");
System.out.print(tblRSet.getObject("TABLE_SCHEM")+" ");
System.out.print(tblRSet.getObject("TABLE_NAME")+" ");
System.out.print(tblRSet.getObject("TABLE_TYPE")+" ");
System.out.print(tblRSet.getObject("REMARKS")+" ");
System.out.println();
}
结果
poc null account TABLE
poc null account_update_log TABLE
poc null ebs_sku TABLE
poc null ebs_skuitem TABLE
poc null ebs_skuitem_his TABLE
poc null favorite TABLE
poc null machine_status TABLE
poc null seq_sequence TABLE
poc null student TABLE
poc null stufav TABLE
poc null test_1 TABLE
poc null test_if TABLE
poc null test_parent TABLE
poc null test_parent2 TABLE
poc null test_ref TABLE
poc null user TABLE
poc null test_view VIEW
这里的
TABLE_CAT
TABLE_SCHEM
TABLE_NAME
TABLE_TYPE
REMARKS就不做详细解释了,
需要注意的是TABLE_TYPE,由于每个数据库的功能各不相同,所以支持的对象类型也不尽相同。 你可以用
result = dbMeta.getTableTypes();
while(result.next())
{
System.out.print(result.getObject(" TABLE_TYPE ")+" ");}
TABLE
VIEW
LOCAL TEMPORARY
获取table type来进行判断。
这里还不错,一个标准的api使我们不需要针对每种数据库的数据字典操作了。
下一个介绍 jdbc读取数据库里的信息--读取主键,外键信息。
- 如果没有那句“三十而立”,三十岁的男人正可以轻轻松松
- 专业论坛 http://www.inthirties.com
- 技术博客 http://blog.csdn.net/inthirties
- 个人站点 http://blog.inthirties.com
- Oracle Mysql技术论坛| 打造实用的Oracle Mysql技术交流园地