Подключение к базе данных Microsoft Access с помощью обработки - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь подключиться к локальной базе данных 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.

enter image description here

Я только что прокомментировал эту строку, взамен import org.apache.commons.lang.*;.

В результате возникает новая ошибка со ссылкой на строку

Statement s = conn.createStatement();

: the type Statement is ambiguous

Затем я посмотрел на конфликт библиотеки и прокомментировал также import org.hsqldb.*;

Теперь, похоже, все работает правильно, я могу получить информацию о своей таблице, но очень грязно.

Есть ли правильный способ импортировать только 5 библиотек?

UPDATE

В соответствии с предложением Kevin Workman перетаскивание файла JAR в окне эскиза также возможно, и автоматически создается папка code в папке эскиза, включая удаленные файлы.

Включает в себя все пакеты и больше не требуется никакой строки кода, в любом случае, эта процедура имеет два недостатка:

  1. Из-за того, что за кулисами создается папка code в папке эскизов, импортируйте пакеты только для одного эскиза вместо папки «глобальной» библиотеки, и ее необходимо реплицировать для каждого эскиза. .

  2. Я заметил две ошибки после импорта пакетов: одна из-за org.apache.commons.lang.enum.*, в которой используются выделенные слова enum и org.hsqldb.*, в которых определение объекта Statement находится в конфликте с другой библиотекой. Техника перетаскивания не позволяет выбрать одну библиотеку для исключения, чтобы решить эти ошибки.

1 Ответ

0 голосов
/ 06 ноября 2018

Самый простой способ импортировать файл .jar в эскиз обработки - это перетащить файл .jar в редактор обработки.

dragging jar onto Processing editor

Сделайте это для ваших файлов 5 .jar. Если вам интересно, что он делает за кулисами, после перетаскивания взгляните на каталог эскизов.

Бесстыдная самореклама: здесь - руководство по использованию библиотек в обработке.

...