我需要从下面的代码返回可滚动的结果集:
ResultSet columnMetaData = connection.getMetaData().getColumns(null, null, "my_table", "%");
但是,getColumns()
API似乎没有为我提供一种方法,让我说出我希望ResultSet
是哪种结果集类型。它仅返回TYPE_FORWARD_ONLY
结果集。我发现的创建可滚动结果集的唯一示例涉及创建Statement
。但是我只能从DatabaseMetaData
对象而不是getColumns
获取Connection
对象(并由此调用Statement
方法)。
有人知道通过调用getColumns()
返回可滚动结果集的方法吗?
顺便说一下,上面的代码与xerial的SQLite JDBC驱动程序一起使用。
答案 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
中。