如何 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
.
中
我需要 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 aDatabaseMetaData
method have a sensitivity ofTYPE_FORWARD_ONLY
and a concurrency ofCONCUR_READ_ONLY
.ResultSet.getHoldability
can be called to determine the holdability of the returnedResultSet
object as the default holdability is implementation defined.
您没有解释为什么需要它可滚动,但您要么需要将其转换为列表,要么将其包装在 CachedRowSet
.