我有2个软件的安装,其中java.sql.Connection类在某些部分代码中尝试获取列的元数据,我使用以下代码:
public class DbColumnRules {
public static void loadMetaDataColumns(final Connection conn) {
try {
String schema = conn.getMetaData().getUserName();
RsultSet columns = conn.getMetaData().getColumns(null, schema, "CATEGORY", "%");
while(columns.next()){
//Name of column
System.out.println("Name: " + columns.getString(4));
System.out.println("Length: " + columns.getInt(7));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
假设java Connection类成功建立了通信。在生产环境中,代码不打印元数据,我的客户端告诉我两个db用户的权限是相同的,但DB是不同的实例,每个用户一个。我使用的是Oracle 11g。
所以这就是问题:如何通过查询了解用户对数据库的权限?应用程序的用户是否必须具有使用java.sql.Connection类获取列元数据的特殊权限?