2014-03-19 44 views
0

我正在使用com.teradata.jdbc.TeraDriver通过jdbc获取teradata数据库列表?

我需要获取要显示给用户的所有数据库的列表。为此,我创建java.sql.Connection并调用以下内容:

connection.getMetaData().getSchemas() 

这将返回所有teradata数据库的列表。不过,我想从这个列表中排除用户。

为了让自己更清楚。如果我们在Teradata Studio Express中查看Teradata数据库,我们可以看到所有数据库的列表。在数据库的详细信息中有一个称为数据库类型的属性。该值是“用户”或“数据库”。我想通过jdbc获取所有那些“数据库”类型的数据库。

任何帮助将不胜感激。谢谢!

+0

表面上的问题是用户是Teradata中的数据库。唯一的区别是用户有密码。因此,用户的模式可以像任何其他数据库一样包含对象。 –

回答

1

开发自己GetSchema()方法查询DBC.Databases查看:

public static String getSchema (Connection con) 
throws SQLException 
{ 
Statement stmt = con.createStatement() ; 
try { 
    ResultSet rs = stmt.executeQuery ("SELECT DatabaseName FROM DBC.Databases WHERE DBKind = 'D'") ; 
    try { 
    rs.next() ; 
    return rs.getString (5) ; 
    } finally { rs.close() ; } 
} finally { stmt.close() ; } 
} 

如果你想在显示,那么你可以使用额外的逻辑对象多一点分立指定UseXViews参数在连接字符串中仅返回用户通过显式或隐式权限提供访问权限的对象。

链接指向用于提供答案的网站。