使用jdbc获取允许用户使用的所有表

时间:2016-01-21 16:28:55

标签: java database jdbc

我使用jdbc连接到数据库,从数据库获取所有模式和表的列表(我假设某些数据库此时可能只返回当前用户可以查询的表,但某些数据库返回完整列表当用户试图查询某些表时,他得到的权限不足"错误。 有没有办法只获取表,用户只能使用jdbc功能进行查询?无需向数据库写特殊查询。

现在我正在看

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

但是从这个查询的结果来看,不太清楚哪些表可以用户查询。

目前我正在使用SAP HANA数据库,但一般情况下它可能是任何数据库,所以我正在寻找一些常用的方法。

1 个答案:

答案 0 :(得分: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,其中包含表名和PRIVILEGE,其中包含每个表的访问权。