如何 return 来自 getMetaData.getColumns() 的可滚动结果集?

How to return a scrollable result set from getMetaData.getColumns()?

我需要 return 来自以下代码的可滚动结果集:

ResultSet columnMetaData = connection.getMetaData().getColumns(null, null, "my_table", "%");

但是,getColumns() API 似乎没有提供一种方式让我说出我希望 ResultSet 成为哪种结果集类型。它只有 return 个 TYPE_FORWARD_ONLY 结果集。我发现的创建可滚动结果集的唯一示例涉及创建 Statement。但是我只能从 Connection 对象中得到一个 DatabaseMetaData 对象(从而调用 getColumns 方法),而不是 Statement.

有谁知道通过调用 getColumns() return 可滚动结果集的方法吗?

顺便说一句,上面的代码使用了xerial的SQLite JDBC Driver。

你不能。 JDBC 规范明确指定元数据结果集需要 TYPE_FORWARD_ONLY。请参阅 JDBC 4.3 Specification,部分 7.5 SQL 对象及其属性 :

The ResultSet objects that are returned from a DatabaseMetaData method have a sensitivity of TYPE_FORWARD_ONLY and a concurrency of CONCUR_READ_ONLY. ResultSet.getHoldability can be called to determine the holdability of the returned ResultSet object as the default holdability is implementation defined.

您没有解释为什么需要它可滚动,但您要么需要将其转换为列表,要么将其包装在 CachedRowSet.