首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Jackcess通过多列查找行

Java Jackcess通过多列查找行
EN

Stack Overflow用户
提问于 2014-08-05 11:00:36
回答 1查看 1.5K关注 0票数 2

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

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

代码语言:javascript
复制
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-条件“。

从我在Jackcess上看到的文档来看,FindRowByPrimaryKey或FindRowByEntry似乎做了我需要的事情,但是我发现的例子只显示了它在一个条件下工作。

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

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

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-05 14:08:50

可以通过为Map创建具有多个条目的entryValues来指定几个条件,如下所示:

代码语言:javascript
复制
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 (details 这里)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25137180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档