У меня есть программа Java, которую нужно извлечь из базы данных Microsoft Access. Недавно мне пришлось изменить код для использования UCanAccess вместо ODBC, поскольку мост JDBC-ODBC не поддерживается в Java SE 8 (Управление базой данных Access из Java без ODBC)
Когда я запускаю код, показанный ниже (только пример кода, приведенный на веб-сайте UCanAccess), я получаю сообщение об ошибке:
ERROR: net.ucanaccess.jdbc.UcanaccessSQLException: user lacks privilege or object not found: NULL
Код выглядит следующим образом
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://Z:\\Assignment.accdb");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM tbl2014janjun"); //tbl2014janjun ORDER BY ID
while (rs.next()) {
System.out.println(rs.getString(1));
}
Во время тестирования я заметил, что этот код может получить доступ к отдельной базе данных Work Order, и результат соответствует ожидаемому. Кроме того, всякий раз, когда этот код пытается запуститься, он создает блокирующий файл laccdb в каталоге сервера. Из-за этого я считаю, что проблема заключается в привилегиях пользователя. При поиске возможных ответов на этом сайте большинство из них относилось ко второй половине сообщения об ошибке - в таблице была написана ошибка и т. д. Я убедился, что орфография/расположение/структура файла верны.
Спасибо за любую помощь, которую вы можете предоставить.
console.bat
для Windows иconsole.sh
для Linux (и др.). Они запросят у вас расположение файла базы данных, а затем просканируют его, открыв каждую таблицу/запрос и сообщив обо всех обнаруженных ошибках. Попробуйте это и посмотрите, даст ли это вам дополнительные подсказки относительно причины вашей трудности. - person Gord Thompson   schedule 07.01.2015console.bat
. После просмотра ошибки кажется, что соединение не загружает таблицы, а как-то загружает соответствующие индексы. Я не уверен, почему это может быть так. Я могу опубликовать результаты, но они не говорят мне намного больше, чем это. - person user3656992   schedule 07.01.2015