Я пытаюсь подключиться к локальной базе данных Microsoft Access с обработкой (v3.4 windows64).
Согласно этому предыдущему ответу ( Управление базой данных Access из Java без ODBC ) Я скачал библиотеки UCanAccess отсюда (http://ucanaccess.sourceforge.net/site.html), текущая версия 4.0.4
Включает ucanaccess-4.0.4.jar
и в папке lib
: commons-lang-2.6.jar
, commons-logging-1.1.3.jar
, hsqldb.jar
, jackcess-2.1.11.jar
Вот простой код эскиза, который я использую:
import java.sql.*;
void setup() {
size(640, 360); // Size must be the first statement
stroke(255); // Set line drawing color to white
frameRate(30);
try{
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://D:/Dati/Profili/M030098/Documents/Database1_test.accdb");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM tab_one");
while (rs.next()) {
System.out.println(rs.getString(1));
}
}catch(Exception e){
e.printStackTrace();
}
}
Я не уверен, что правильно импортировал 5 библиотек из своего эскиза. Без них блок catch возвращает это сообщение:
java.sql.SQLException: не найден подходящий драйвер для jdbc: ucanaccess: // C: / ... путь к моей папке ... /Documents/Database1_test.accdb
Если я импортирую 5 JAR-файлов, копируя их в папке Processing\libraries
, а затем добавлю строку импорта hsqldb.jar;
или import hsqldb.*;
в мой эскиз, то получится ошибка консоли:
Не найдена библиотека для hsqldb
Библиотеки должны быть установлены в папке с именем «библиотеки» внутри папки sketchbook (см. Окно «Настройки»).
Единственный проводной способ, который я нашел, - это создать выделенную папку внутри библиотек с тем же именем jar, включая подпапку библиотеки, включая jar. Все они переименованы с удалением любых цифр и тире символов (см. Изображение).
Таким образом, имена библиотек доступны в sketch > import library
и, если выбрано, добавьте несколько новых включаемых линий (48) в эскиз.
Один из них (import org.apache.commons.lang.enum.*;
) приводит к ошибке: Syntax error on token "enum", Identifier expected.
Я только что прокомментировал эту строку, взамен import org.apache.commons.lang.*;
.
В результате возникает новая ошибка со ссылкой на строку
Statement s = conn.createStatement();
: the type Statement is ambiguous
Затем я посмотрел на конфликт библиотеки и прокомментировал также import org.hsqldb.*;
Теперь, похоже, все работает правильно, я могу получить информацию о своей таблице, но очень грязно.
Есть ли правильный способ импортировать только 5 библиотек?
UPDATE
В соответствии с предложением Kevin Workman перетаскивание файла JAR в окне эскиза также возможно, и автоматически создается папка code
в папке эскиза, включая удаленные файлы.
Включает в себя все пакеты и больше не требуется никакой строки кода, в любом случае, эта процедура имеет два недостатка:
Из-за того, что за кулисами создается папка code
в папке эскизов, импортируйте пакеты только для одного эскиза вместо папки «глобальной» библиотеки, и ее необходимо реплицировать для каждого эскиза. .
Я заметил две ошибки после импорта пакетов: одна из-за org.apache.commons.lang.enum.*
, в которой используются выделенные слова enum
и org.hsqldb.*
, в которых определение объекта Statement находится в конфликте с другой библиотекой. Техника перетаскивания не позволяет выбрать одну библиотеку для исключения, чтобы решить эти ошибки.