Невозможно удалить таблицу через Jackcess, используя getSystemTable и findFirstRow
Почему нельзя курсор findFirstRow
когда я пытаюсь использовать Jackcess, чтобы найти строку, которую мне нужно удалить, чтобы удалить таблицу?
private static void deleteTable(Database db, String tableName) throws IOException {
Table table = db.getSystemTable(tableName);
if (table == null) {
return;
}
Cursor cursor = table.getDefaultCursor();
Map<String, Object> criteria = new HashMap<String, Object>();
criteria.put("Name", tableName);
criteria.put("Type", (short) 1);
if (cursor.findFirstRow(criteria)) {
table.deleteRow(cursor.getCurrentRow());
Log.e(TAG, "delete " + tableName + " success!");
} else {
Log.e(TAG, "can't find this Table");//run here
}
db.flush();
db.close();
}
PS: нет сообщений об исключении
1 ответ
Решение
Ваша ошибка в том, что вы открываете таблицу, которую хотите удалить, а не системную таблицу, которая содержит список объектов базы данных. Вместо
Table table = db.getSystemTable(tableName);
вам нужно использовать
Table table = db.getSystemTable("MSysObjects");