如何从 getMetaData.getColumns() 返回可滚动的结果集?
Posted
技术标签:
【中文标题】如何从 getMetaData.getColumns() 返回可滚动的结果集?【英文标题】:How to return a scrollable result set from getMetaData.getColumns()? 【发布时间】:2018-07-17 01:59:38 【问题描述】:我需要从下面的代码中返回一个可滚动的结果集:
ResultSet columnMetaData = connection.getMetaData().getColumns(null, null, "my_table", "%");
但是,getColumns()
API 似乎无法让我说出我希望ResultSet
成为哪种结果集类型。它只返回一个TYPE_FORWARD_ONLY
结果集。我发现创建可滚动结果集的唯一示例涉及创建Statement
。但是我只能从Connection
对象而不是Statement
中获取DatabaseMetaData
对象(从而调用getColumns
方法)。
有谁知道通过调用getColumns()
返回可滚动结果集的方法吗?
顺便说一下,上面的代码是配合xerial的SQLite JDBC Driver使用的。
【问题讨论】:
【参考方案1】:你不能。 JDBC 规范明确指定元数据结果集需要为TYPE_FORWARD_ONLY
。请参阅JDBC 4.3 Specification,7.5 SQL 对象及其属性部分:
从
DatabaseMetaData
返回的ResultSet
对象 方法的敏感性为TYPE_FORWARD_ONLY
,并发性为CONCUR_READ_ONLY
。ResultSet.getHoldability
可以调用 将返回的ResultSet
对象的可持有性确定为 默认保持性由实现定义。
您没有解释为什么需要它是可滚动的,但您要么需要将其转换为列表,要么将其包装在 CachedRowSet
中。
【讨论】:
感谢您的帮助,马克。我将尝试按照您的建议将 ResultSet 转换为列表。以上是关于如何从 getMetaData.getColumns() 返回可滚动的结果集?的主要内容,如果未能解决你的问题,请参考以下文章
如何将数据从回收器适配器发送到片段 |如何从 recyclerview 适配器调用片段函数
如何从服务器获取和设置 android 中的 API(从服务器获取 int 值)?如何绑定和实现这个