2014-04-05 23 views
2

我使用jackess 2來讀取Java中的Access文件。以下是代碼。查找行是/否鍵入jackcess

在我讀的表中,我只有1行。 MS-Access中有一個名爲「活動」的類型爲「是/否」的列。

當我打印表中的所有值時,活動列的值顯示爲「true」。但是,當我嘗試使用findRow()查詢該行時,沒有匹配。

如何查詢列表「Active」的表格?

try { 
    Database db = DatabaseBuilder.open(new File(strDataPath + "DB.mdb")); 
    Table table = db.getTable("03_Test_Cases"); 

    for(Row row : table) { 
     System.out.println("Column 'a' has value: " + row.get("Active")); 
     // RETURNS "true" 
    } 

    Row row = CursorBuilder.findRow(table, Collections.singletonMap("Active", "true")); 

    if(row != null) { 
     System.out.println("Found row : " + row); 
    } else { 
     System.out.println("Could not find row"); // Always hits here only. 
    } 

} catch (IOException e) { 
    e.printStackTrace(); 
} 
+0

從MS Access的角度來看,TRUE等於-1,它不是一個字符串。 – Fionnuala

回答

1

您需要將搜索值指定爲實際的布爾值,而不是字符串。這適用於我:

Row row = CursorBuilder.findRow(table, Collections.singletonMap("Active", true)); 
if (row != null) { 
    System.out.println("Found row : " + row); 
} 
else { 
    System.out.println("Could not find row"); 
} 
+0

太棒了..我之前一直在嘗試「真實」。當我根據您的建議對其進行更改時,它會起作用。謝謝。 – Purus