2016-09-16 2 views
1

Я использую Jackcess для обновления данных в таблице Access. Другое приложение - опрос данных через Microsoft Access Database Engine (Jet). Однако он не смог получить обновленные данные, пока я не заставил его закрыть базу данных и снова открыть ее.Изменение данных из кода Java, не обнаруженного соединением Jet/ACE

Кто-нибудь знает, как Data Database Engine обнаруживает изменения данных Jackcess?

ответ

0

Кто-нибудь знает, как Data Database Engine обнаруживает изменения данных Jackcess?

Это не так. Вашему другому приложению придется закрыть и повторно открыть соединение с Access Database Engine (ACE/Jet), чтобы он знал об изменениях, сделанных Jackcess.

Обратите внимание, что это имеет значение, если другое приложение (ACE/Jet) также должно внести изменений в базу данных Access. Оба приложения будут записывать непосредственно в файл базы данных Access независимо друг от друга, и в этом случае существует реальная возможность повреждения файла.

Даже если

каждое приложение выполняет запись только определенных таблиц/столбцов. В письменной форме нет совпадений/конфликтов.

все еще существует вероятность повреждения, если все таблицы находятся в одном файле базы данных. Например, если приложение Jackcess выделяет дополнительную страницу данных для хранения новой записи, а приложение Jet/ACE также должно выделить дополнительную страницу данных для хранения какой-либо другой записи, которую пытается ее вставить,, то Jet/Приложение ACE не будет знать, что «следующая доступная страница» уже была взята приложением Jackcess и будет пытаться выделить эту же страницу для себя. В лучшем случае результатом будет какая-то ошибка; в худшем случае, два приложения просто сбивают друг друга.

Если два приложения действительно пишут полностью отдельные наборы таблиц без перекрытия, тогда опасность повреждения может быть уменьшена путем сохранения двух наборов таблиц в двух отдельных файлах .accdb, используя связанные таблицы, чтобы разрешить приложениям «видеть» все таблицы в одном месте.

+0

Будет ли схема базы данных сконструирована так, чтобы каждое приложение записывало только в определенные таблицы/столбцы. В письменной форме нет совпадений/конфликтов. –

0

После некоторого исследования я обнаружил, что Jackcess является драйвером базы данных типа 4. Он напрямую читает/записывает в файл базы данных. JETS не смог обнаружить изменения, сделанные моим драйвером типа 4. Чтобы работать с ним, мне нужен мост JDBC-ODBC, драйвер базы данных типа 1. Мне нужно извлечь код из Java 7 и поместить его в Java 8. Это работает только для 32-разрядной Java, потому что JETS - всего 32 бит.

Смежные вопросы