简体   繁体   English

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

[英]Get All tables allowed to user with jdbc

I'm connecting to a database using jdbc, getting list of all schemas and tables from database (I assume that some databases may return at this point only tables which current user can query, but some of databases return full list of tables) and when user try to query some tables he get "insufficient privileges" error. 我正在使用jdbc连接到数据库,从数据库中获取所有模式和表的列表(我假设此时某些数据库可能仅返回当前用户可以查询的表,而某些数据库则返回表的完整列表)以及何时用户尝试查询某些表,他会得到“权限不足”错误。 Is there a way to get only tables, user can query using only jdbc capabilities? 有没有办法只获取表,用户只能使用jdbc功能进行查询? Without writing special query to database. 无需向数据库编写特殊查询。

Now I'm looking at 现在我在看

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

But from result of this query it's not so clear which exactly tables can user query. 但是从查询结果来看,尚不清楚用户可以查询哪些表。

Currently I'm working with SAP HANA database, but in general it may be any database, so I'm looking for some common approach. 目前,我正在使用SAP HANA数据库,但通常它可以是任何数据库,因此我正在寻找一些常用方法。

Please look at 请看

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

You have to get the each row from the ResultSet and query of column name TABLE_NAME which contains the table name and PRIVILEGE which contains the access of each table. 您必须从ResultSet中获取每一行,并查询包含表名的列名TABLE_NAME和包含对每个表的访问权的PRIVILEGE。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM