Обновление строк в Java с помощью Jackcess

Я пытаюсь обновить строки с определенным значением, используя Jackcess в Java. Я использую приведенный ниже код, и в строках нет никаких изменений.

Что мне здесь не хватает? Я чувствую себя потерянным, поскольку для этих методов нет документации.

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();

person Purus    schedule 10.06.2014    source источник
comment
Рассматривали ли вы возможность использования UCanAccess? Для получения дополнительной информации см. вопрос здесь.   -  person Gord Thompson    schedule 10.06.2014
comment
Да. Несколько месяцев назад вы предложили это для одного из моих вопросов. Но, к сожалению, UcanAccess нельзя использовать в моей среде из-за некоторых политик.   -  person Purus    schedule 10.06.2014


Ответы (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);

не будет работать.

person Gord Thompson    schedule 10.06.2014
comment
Это работает. Я считаю, что все эти важные операции должны быть задокументированы на официальной странице. Большое спасибо. - person Purus; 10.06.2014
comment
Спасибо за этот совет. Я только что это заметил. - person Purus; 10.06.2014