簡體   English   中英

Java Jackcess按多列查找行

[英]Java Jackcess Find Row by More than one column

我正在使用Jackcess庫在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在此處查看詳細信息)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM