gpt4 book ai didi

Java Jackcess 按多列查找行

转载 作者:搜寻专家 更新时间:2023-10-30 20:18:06 24 4
gpt4 key购买 nike

我正在使用 Jackcess 库 Access Java 上的 MS Access 数据库,我想知道如何通过多个列值查找表格行。

到目前为止,每次我需要按一列值查找一行时,我都遵循此过程:

Row row = CursorBuilder.findRow(table, Collections.singletonMap("a", "foo"));

if(row != null) {
System.out.println("Found row where 'a' == 'foo': " + row);
} else {
System.out.println("Could not find row where 'a' == 'foo'");
}

我在 Jackcess 网站上找到了这个,它的作用类似于“SELECT * FROM tablename WHERE a = “foo”。我需要的是拥有多个“WHERE-Condition”。

根据我在 Jackcess 上阅读的文档,FindRowByPrimaryKey 或 FindRowByEntry 似乎可以满足我的需要,但我发现的示例仅显示它在一种情况下工作。

http://jackcess.sourceforge.net/apidocs/com/healthmarketscience/jackcess/IndexCursor.html#findRowByEntry%28java.lang.Object...%29

第二个参数称为 entryValues(复数),但我不知道如何使用它。

提前致谢

最佳答案

您可以通过为 entryValues 创建一个包含多个条目的 Map 来指定多个条件,如下所示:

Database db = DatabaseBuilder.open(new File(
"C:/Users/Gord/Desktop/Database1.accdb"));
Table table = db.getTable("People");
Map<String, Object> criteria = new HashMap<String, Object>();
criteria.put("FirstName", "Jimmy");
criteria.put("LastName", "Hoffa");
Row row = CursorBuilder.findRow(table, criteria);
if (row == null) {
System.out.println("No row found that matches all criteria.");
}
else {
System.out.println(String.format("Row found: ID=%d.", row.get("ID")));
}

这将找到匹配所有指定条件的行(如 ... WHERE FirstName='Jimmy' AND LastName='Hoffa')。要使用更复杂的搜索条件,您可以考虑使用 UCanAccess (详情 here )。

关于Java Jackcess 按多列查找行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25137180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com