Я не могу понять, как включить базу данных SQLite в Java.jar файл для развертывания (через Java WebStart).
Базу данных не нужно обновлять во время выполнения... это, по сути, прославленный файл конфигурации.
Использование Eclipse, кстати.
Я не могу понять, как включить базу данных SQLite в Java.jar файл для развертывания (через Java WebStart).
Базу данных не нужно обновлять во время выполнения... это, по сути, прославленный файл конфигурации.
Использование Eclipse, кстати.
Другим хорошим вариантом для рассмотрения может быть дерби, javadb. Теперь он поставляется с java и довольно быстро настраивается и имеет хорошие характеристики.
С уважением, Stéphane
SQLite требует отдельных файлов из-за того, как движок обеспечивает блокировку и ACID. Даже без необходимости обновления базы данных, SQLite предназначен только для работы с прямым доступом к файлам (или поддержкой памяти, но не с одним из Java или другого хоста;-) - SQLite показывает, что это не чистым решением Java, и не предназначено для систем, не использующих базовую подсистему IO системы.
Файлы данных SQLite могут быть извлечены из JAR во временное место при запуске (и, если необходимо, верните туда в конце) - но кроме чего-то похожего на этот подход, не возможное. Сама задача не сложна, но это еще одна вещь, которая должна быть выполнена и может потребовать дополнительных привилегий, недоступных в некоторых средах.
Счастливое кодирование.
Вы считали HSQLDB? Быть может, быстрее работать HSQLDB, чем рассчитывать, как это сделать с помощью sqlite. Я знаю, что вы сказали, что это только чтение, но это, как правило, не так, как вы бы настроили sqlite.
Другой вариант - сохранение дампа базы данных sqlite
sqlite3 .dump
в вашем файле jar, прочитав его при запуске из класса path через getResourceAsStream() и создав базу данных при запуске приложения. очевидно, это добавляет накладные расходы на запуск и не является идеальным, но может работать в крайнем случае.
edit: только что нашел код, чтобы фактически создать БД программно здесь. в зависимости от размера вашего db, хранение SQL (при необходимости сжатие) и создание базы данных при запуске могут быть не такими ужасающими.
Поместите базу данных SQLite в папку (пакет) ресурса внутри проекта.
Подключитесь следующим образом:
public class SQLiteProject extends javax.swing.JFrame {
:
private void formWindowOpened(java.awt.event.WindowEvent evt) {
CModel.connectDB(getClass().getResource("/resources/database.sqlite").toString());
}
public class CModel {
:
public static Connection connectDB(String cstr) {
try {
Class.forName("org.sqlite.JDBC");
Conn = DriverManager.getConnection("jdbc:sqlite::resource:" + cstr);
JOptionPane.showMessageDialog(null, "Connect!");
return Conn;
} catch (ClassNotFoundException | SQLException | HeadlessException e) {
JOptionPane.showMessageDialog(null, e);
}
return null;
}
Загрузите и добавьте библиотеку sqlite-jdbc-3.8.7.jar, используя Добавить JAR/Папка...
Используйте "Очистить" и "Сборка" для создания проекта (создает папку dist folder und copy library).
Сделайте жирную банку, используя: http://www.oracle.com/technetwork/articles/javase/single-jar-141905.html