如何从getMetaData.getColumns()返回可滚动的结果集?

时间:2018-07-17 01:59:38

标签: java sqlite jdbc resultset database-metadata

我需要从下面的代码返回可滚动的结果集:

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

但是,getColumns() API似乎没有为我提供一种方法,让我说出我希望ResultSet是哪种结果集类型。它仅返回TYPE_FORWARD_ONLY结果集。我发现的创建可滚动结果集的唯一示例涉及创建Statement。但是我只能从DatabaseMetaData对象而不是getColumns获取Connection对象(并由此调用Statement方法)。

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

顺便说一下,上面的代码与xerial的SQLite JDBC驱动程序一起使用。

1 个答案:

答案 0 :(得分:1)

不能。 JDBC规范明确指定元数据结果集必须为TYPE_FORWARD_ONLY。请参见JDBC 4.3 Specification,第 7.5个SQL对象及其属性

  

ResultSet返回的DatabaseMetaData对象   方法的敏感度为TYPE_FORWARD_ONLY,并发度为   CONCUR_READ_ONLY。可以调用ResultSet.getHoldability   将返回的ResultSet对象的可保留性确定为   默认的可保持性是由实现定义的。

您无需解释为什么需要使其可滚动,但是您需要将其转换为列表,或者将其包装在CachedRowSet中。