如何使用 Jackcess 从查询而不是从表中检索数据
Posted
技术标签:
【中文标题】如何使用 Jackcess 从查询而不是从表中检索数据【英文标题】:How to retrieve data from a Query instead of from Tables with Jackcess 【发布时间】:2014-04-23 09:32:14 【问题描述】:我有一个 Access 数据库,为了使工作更轻松,我对数据库进行了查询。如何从查询而不是表中获取数据?
为了从表中获取数据,我使用了以下代码:
Table table = db.getTable("matchTable");
Cursor cursor = CursorBuilder.createCursor(table);
while (cursor.findNextRow(Collections.singletonMap("idMatch", 15)))
Row row = cursor.getCurrentRow();
...
【问题讨论】:
【参考方案1】:根据 Jackcess 常见问题解答(具体来说,here):
Jackcess 可以执行 SQL 查询吗?
从 1.1.19 版本开始,Jackcess 能够读取 Access 数据库中保存的查询(即解释存储在系统查询表中的数据)。但是,Jackcess 没有能力执行这些查询。
这意味着 Jackcess 可以检索与 Access 中保存的查询关联的 SQL 代码,但 Jackcess 不能执行该 SQL 代码(或返回其结果)。
换句话说,如果我们在 Access 中有一个名为 [MySavedQuery] 的已保存查询,那么 Jackcess 可以检索到包含 SQL 命令的String
,例如,
SELECT * FROM Customers WHERE City='wherever'
但 Jackcess 无法执行该命令以实际返回该查询的结果。此外,Jackcess 方法 db.getTable()
可以打开 Access 表,但不能像打开表一样打开已保存的查询。
但是,UCanAccess 可以执行已保存的 Access 查询并返回其结果。也就是说,UCanAccess 可以做
SELECT * FROM MySavedQuery
【讨论】:
所以在我的情况下我可以,因为查询在 Access DB 中,但我应该怎么做? @Shiroga 我已经更新了我的答案,试图让它更清楚:Jackcess 无法返回 Access 保存查询的 results。 UCanAccess 也适用于 Linux?以上是关于如何使用 Jackcess 从查询而不是从表中检索数据的主要内容,如果未能解决你的问题,请参考以下文章