最新消息:发现真没时间折腾VPS,最近又换了个空间。呵呵

JDBC通过DatabaseMetaData读取表、视图和别名的属性

最近在做一个系统,要求把Access数据读取到Oracle里。在读取之前要Check表是否存在。在网上查了一下,发现Java本身提供的DatabaseMetaData类就可以实现所有的功能。

我们要用到的函数是DatabaseMetaData.getTables。它的定义如下面的代码,其中catalog一般不用设置(设为NULL),schemaPattern和tableNamePattern表示你要取的schema和表名的检索方法,可以使用通配符下划线和百分号,NULL表示显示所有。types一般有以下值:"TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM"。你也可以用DatabaseMetaData.getTableTypes来取得你能见的类别。

Java
ResultSet getTables(String catalog, String schemaPattern,
        String tableNamePattern, String types[]) throws SQLException;

取得的ResultSet的结构如下(只列了一部分,详细的可以看JDK文档

列名 类型 => 说明
TABLE_CAT String => 表 catalog
TABLE_SCHEM String => 表 schema
TABLE_NAME String => 表名
TABLE_TYPE String => 表类型
REMARKS String => 表注释

测试代码如下:

Java
public static void getAllTable(Connection conn) throws SQLException {
    DatabaseMetaData metaData = conn.getMetaData();

    ResultSet rs = metaData.getTables(null, "YUTUO", "T%", new String[] {"TABLE"});

    while (rs.next()) {
        String tableName = rs.getString("TABLE_NAME");
        System.out.println("==============" + tableName + "===============");
        System.out.println("Table Name: " + tableName);
        System.out.println("Table Cat: " + rs.getString("TABLE_CAT"));
        System.out.println("Table Schem: " + rs.getString("TABLE_SCHEM"));
        System.out.println("Table Type: " + rs.getString("TABLE_TYPE"));
        System.out.println("Table Remarks: " + rs.getString("REMARKS"));
    }
}

转载请注明:宇托的狗窝 » JDBC通过DatabaseMetaData读取表、视图和别名的属性

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址