2016-01-21 21 views
1

我使用jdbc連接到數據庫,從數據庫中獲取所有模式和表的列表(我假設有些數據庫可能在此時返回僅當前用戶可以查詢的表,但一些數據庫返回表的完整列表),當用戶嘗試查詢某些表時,他會得到「權限不足」的錯誤。 有沒有辦法只得到表,用戶只能使用jdbc功能進行查詢?不寫特別查詢數據庫。獲取允許用戶使用jdbc的所有表

現在我在看

 DatabaseMetaData dbMeta = connection.getMetaData() 
     dbMeta.getTablePrivileges(null, null, null); 

但是從這個查詢結果它不是那麼清楚這究竟表可以用戶查詢。

目前我正在使用SAP HANA數據庫,但通常它可能是任何數據庫,所以我正在尋找一些常見的方法。

+0

你會得到什麼輸出,什麼不清楚? – wero

+0

請看阿什拉夫阿里瓦哈卜的帖子和我的評論。我有文檔中描述的結果集,對於我來說,這個結果集與我正在查詢的用戶相關還是不清楚,或者這是數據庫中所有表的列表? – user2281439

回答

0

請看

http://docs.oracle.com/javase/7/docs/api/java/sql/DatabaseMetaData.html#getTablePrivileges%28java.lang.String,%20java.lang.String,%20java.lang.String%29

你必須得到它包含其中包含每個表的訪問表名和特權的ResultSet和列名TABLE_NAME的查詢的每一行。

+0

是否所有這些權限都與用戶相關,以及我正在查詢誰的憑證,或者這是數據庫中所有表的列表以及所有可以查詢它們的列表? – user2281439

+0

如果我把所有具有「選擇」權限的表格都取得了「權限不足」的錯誤。我試圖選擇受贈人列等於當前用戶名或公共的表。但仍有一些未選中的表格,但用戶可以查詢它們。 – user2281439

+0

有趣。你看過javadoc嗎? –

相關問題