如何从JDBC检索序列元数据?

Rom*_*las 5 java jdbc sequence database-metadata

我试图从Java代码(使用基本JDBC)检索我的Oracle DB的不同类型的元数据.例如,如果我想检索带_FOO后缀的表列表,我可以执行以下操作:

Connection connection = dataSource.getConnection();
DatabaseMetaData meta = connection.getMetaData();
ResultSet tables = meta.getTables(connection.getCatalog(), null, "%_FOO", new String[] { "TABLE" });
// Iterate on the ResultSet to get information on tables...
Run Code Online (Sandbox Code Playgroud)

现在,我想从我的数据库中检索所有序列(例如所有序列命名S_xxx_FOO).

我怎么会这样做,因为我没有看到DatabaseMetaData与序列相关的任何内容?

我是否必须运行查询select * from user_sequences

小智 5

有同样的问题。这相当容易。只需将“SEQUENCE”传递到 getMetaData().getTables() 类型参数中即可。

在您的具体情况下,它会是这样的:

meta.getTables(connection.getCatalog(), null, "%_FOO", new String[] { "SEQUENCE" });
Run Code Online (Sandbox Code Playgroud)


小智 3

您无法通过 JDBC API 执行此操作,因为某些数据库(仍然)不支持序列。

获取它们的唯一方法是查询 DBMS 的系统目录(正如您提到的,我猜您的情况是 Oracle user_sequences