如何使用Connection.getMetaData()过滤GLOBAL TEMPORARY表.getTables

时间:2017-04-06 08:27:30

标签: java database jdbc oracle11g database-metadata

我使用以下SQL语句在Oracle 11g中创建一个全局临时表。

SQL> CREATE GLOBAL TEMPORARY TABLE TEST (id int primary key);

现在如何使用Connection.getMetaData().getTables过滤掉此表格 。对于上面的TABLE_TYPE = TABLE表,我得到了GLOBAL TEMPORARY而不是TEST

以下是我的java代码。

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class GetGlobalTempTables {

public static void main(String[] args) {

    Connection connection = null;
    Statement connStmt = null;
    ResultSet res = null;

    String dbURL = "jdbc:oracle:thin:@localhost:1521:xe";
    String user = "testuser";
    String pass = "testpass";
    try {
        connection = DriverManager.getConnection(dbURL, user, pass);
        DatabaseMetaData meta = connection.getMetaData();
        res = meta.getTables(null, "TEST_SCHEMA", null, new String[] { "TABLE", "VIEW" });
        while (res.next()) {
            System.out.println(res.getString("TABLE_SCHEM") + ", " + res.getString("TABLE_NAME") + ", "
                    + res.getString("TABLE_TYPE"));
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            if (res != null) {
                res.close();
            }
            if (connStmt != null) {
                connStmt.close();
            }
            if (connection != null && !connection.isClosed()) {
                connection.close();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}
}

任何帮助都将非常感谢......!

0 个答案:

没有答案