2014-03-19 79 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參數在連接字符串中僅返回用戶通過顯式或隱式權限提供訪問權限的對象。

鏈接指向用於提供答案的網站。