如何使用 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 从查询而不是从表中检索数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用从两个表中的选择查询问题检索行

如何使用 PHP 表单从多个表中检索数据?

如何使用单个查询联合从另一个表中检索到的表列表?

从查询 C#、EF Core 返回一个值

从单个表中检索具有不同值的同一列的多个输出时的性能问题

Firebase 大查询 - 如何从自定义事件表中检索数据