Java DatabaseMetaData.getColumns() 方法不适用于所有用户
Java DatabaseMetaData.getColumns() method doesn't work for all users
我在 Oracle 数据库中有一些用户,假设 UserOne、UserTwo 和 UserTree 具有相同且不为空的 table,名称为 - "tableExample".
在我的例子中,我需要通过 getColumns() 方法初始化 ResultSet:
DatabaseMetaData md = conn.getMetaData();
ResultSet r = md.getColumns(null, "UserTwo", "tableExample", null);
while(r.next())
{
//Do something;
}
在上面的例子中 r.next() 是正确的,但是当我使用 UserOne 或 UserTree 时 r.next() 是错误的。
无论我选择了哪个用户,我该如何解决这个问题来实现这个 table 的结果集?
*如果我使用:
ResultSet r = md.getColumns(null, null, "tableExample", null);
我会将所有用户的结果接收到数据库中,但我需要使用此方法中的第二个参数动态具体化用户。
来自apidocs:
schemaPattern
- a schema name pattern; must match the schema name as it is stored in the database; [...]
所以这是一种模式,但不幸的是,没有提示该方法预期的模式类型,但您可以尝试一下:
ResultSet r = md.getColumns(null, "User*", "tableExample", null);
ResultSet r = md.getColumns(null, "User.+", "tableExample", null);
或者您可以直接使用 oracle 的系统表(apidoc for 10g):
String sql = "SELECT * FROM SYS.ALL_TAB_COLUMNS WHERE OWNER LIKE 'User%'";
ResultSet r = conn.createStatement().executeQuery(sql);
我在 Oracle 数据库中有一些用户,假设 UserOne、UserTwo 和 UserTree 具有相同且不为空的 table,名称为 - "tableExample".
在我的例子中,我需要通过 getColumns() 方法初始化 ResultSet:
DatabaseMetaData md = conn.getMetaData();
ResultSet r = md.getColumns(null, "UserTwo", "tableExample", null);
while(r.next())
{
//Do something;
}
在上面的例子中 r.next() 是正确的,但是当我使用 UserOne 或 UserTree 时 r.next() 是错误的。
无论我选择了哪个用户,我该如何解决这个问题来实现这个 table 的结果集?
*如果我使用:
ResultSet r = md.getColumns(null, null, "tableExample", null);
我会将所有用户的结果接收到数据库中,但我需要使用此方法中的第二个参数动态具体化用户。
来自apidocs:
schemaPattern
- a schema name pattern; must match the schema name as it is stored in the database; [...]
所以这是一种模式,但不幸的是,没有提示该方法预期的模式类型,但您可以尝试一下:
ResultSet r = md.getColumns(null, "User*", "tableExample", null);
ResultSet r = md.getColumns(null, "User.+", "tableExample", null);
或者您可以直接使用 oracle 的系统表(apidoc for 10g):
String sql = "SELECT * FROM SYS.ALL_TAB_COLUMNS WHERE OWNER LIKE 'User%'";
ResultSet r = conn.createStatement().executeQuery(sql);