返回顶部

收藏

使用jdbc的Connection类获得DatabaseMetaData数据库库表,列信息

更多

之前一直没有注意到jdbc的Connection接口中有一个getMetaData()方法,此方法会返回一个DatabaseMetaData接口的实例。

通过此接口我们可以获得数据库中的库信息,表信息以及数据表的列信息。

如下实例方法

    @Override
    public List<String> getDatabases(String url) throws SQLException {
        List<String> result = new ArrayList<String>();

        Connection conn = null;

        try {
            conn = this.getConnection(url);
            DatabaseMetaData meta = conn.getMetaData();
            ResultSet schemasRS = meta.getSchemas();
            while (schemasRS.next()) {
                String schema = schemasRS.getString("TABLE_SCHEM");
                if (schema == null || schema.length() == 0){
                    continue;
                }
                result.add(schema);
            }
        } finally {
            if (conn != null) {
                conn.close();
            }
        }

        return result;
    }

    @Override
    public List<String> getTables(DbServer dbServer, String database)
            throws SQLException {
        List<String> result = new ArrayList<String>();
        String connUrl = this.getConnectionUrl(dbServer, database);
        Connection conn = null;

        try {
            conn = DriverManager.getConnection(connUrl);
            DatabaseMetaData meta = conn.getMetaData();
            ResultSet rsTables = meta.getTables(null, database , null, null);
            while(rsTables.next()) {
                String tableName = rsTables.getString("TABLE_NAME");
                result.add(tableName);
            }
        } finally {
            if (conn != null) {
                conn.close();
            }
        }

        return result;
    }

这个是jdbc的统一接口,如果要获得数据库的库定义,表定义等信息,推荐使用此方法。

标签:java,jdbc,DatabaseMetaData

收藏

0人收藏

支持

0

反对

0

发表评论