4

Java で Jackcess を使用して、特定の値で行を更新しようとしています。以下のコードを使用していますが、行に変更はありません。

ここで何が欠けていますか?これらのメソッドのドキュメントがないため、途方に暮れています。

Database db = DatabaseBuilder.open(new File("Db.mdb"));
Table table = db.getTable("Table1");

Cursor cursor = CursorBuilder.createCursor(table);

Map<String, Object> map = new HashMap<String, Object>();

map.put("Active", true); // Value to be updated

for (Row row : cursor.newIterable().addMatchPattern("testnum", testNum)) { 
     cursor.updateCurrentRow(table.asUpdateRow(map));
}

db.flush();
db.close();
4

1 に答える 1

1

次のコードは私にとってはうまくいきます:

String dbFile = "C:/Users/Public/test/DB.mdb";
try (Database db = DatabaseBuilder.open(new File(dbFile))) {
    Table table = db.getTable("Table1");
    Cursor cursor = CursorBuilder.createCursor(table);
    int testNum = 1;
    for (Row row : cursor.newIterable().addMatchPattern("testnum", testNum)) {
        row.put("active", true);
        table.updateRow(row);
    }
} catch (Exception e) {
    e.printStackTrace(System.out);
}

Jackcess を使用する場合、列名は大文字と小文字が区別されることに注意してください。上記のコードは、という名前の列を更新しているactiveので、

row.put("active", true);
table.updateRow(row);

動作しますが、

row.put("Active", true);
table.updateRow(row);

動作しないでしょう。

于 2014-06-10T10:50:43.087 に答える