@lonata

Где должен распологаться файл базы данных sqlite в папке программы, чтобы программа могла его видеть?

Я написал программу для друга на JavaFX. Среда разработки Intelij Idea. База данных - SQlite.

Чего я хочу добиться:
- иметь папку с программой, в которой будет файл базы данных (database.db)
- нужные библиотеки для работы программы
- запускаемый exe файл приограммы , так как пользователь привык,что все программы запускаются через этот файл

Я сделал build программы. В выходной папке после этого появилось много файлов. Из них всех я скопировал мне нужные в отдельную папку на рабочий стол, чтобы можно было jar файл обернуть в exe и потом из этого всего сделать инсталлятор (чтобы проще было устанавливать программу на другие компьютеры)

5c4587f204f11458841875.jpeg

После того как я сделал инсталлятор программы, программа запускается и прекрасно работает, но база данных в программе, и база данных, которая находится в файле database.db не соотвтетствует. Такое ощущение,что файл базы данных при билде зашился в jar файл. И вся информация в программе берётся не из файла в папке программы, а из файла,который находится в jar файле. Мне такого не надо, надо чтобы был файл database.db в папке программы, который можно редактировать(например браузером DB Browser) и чтобы вся информация после этого изменилась в программе тоже.

Для того,чтобы сделать exe файл я использовал Launch4j, а для создания инсталлятора - Inno Setup

Куда нужно положить файл database.db чтобы программа брала информацию именно из него?

Это класс, в котором я прописывал путь к файлу базы данных:

public class DbConnection {

  private static final String SQCONN = "jdbc:sqlite::resource:database.db";

  public static Connection getConnection() throws SQLException{

    String path = SQCONN;
    try {
      Class.forName("org.sqlite.JDBC");
      return DriverManager.getConnection(path);
    } catch (ClassNotFoundException ex) {
      ex.printStackTrace();
    }
    return null;
  }
}


Сделать ли билд программы в Intelij Idea вот так?:

5c4589c62b848954237562.jpeg

Или вот так?

5c4589dc8c866074185816.jpegИли вообще не нужно класть файл database.db при билде jar файла?

Структура моего проекта:

5c458b0ccd32c593743282.jpeg
  • Вопрос задан
  • 2575 просмотров
Пригласить эксперта
Ответы на вопрос 3
посмотрел у себя - машина windows

src/main/resources/application.properties:spring.datasource.url = jdbc:sqlite:${USERPROFILE}\\sqlite\\database_name.db


без spring можно по моему
String.format("%s/src/main/resources/%s",
                                System.getProperty("user.dir"), resourceFileName);


ну и вариации
Ответ написан
@striver
jdbc:sqlite:database.db - это не файл sqlite
Если вы хотите в запихнуть в корневой каталог, то вот
"jdbc:sqlite:database.sqlite"
Или же в любой папке, хоть на сетевой
"jdbc:sqlite:z:\\database.sqlite"
Ответ написан
Комментировать
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Здравствуйте!
Файл БД будет там, куда вы укажите путь для ее создания. Логично было бы, если вы инсталлируете программу, то получать этот путь и туда же распаковать или создать БД.
Судя по всему у вас javafx проект. В intellij idea есть возможность создать exe артефакт.

Или вообще не нужно класть файл database.db при билде jar файла?

Если это чистая БД, то нет смысла ее паковать в jar. Можете при первом запуске программы создать БД и все. А уже при последующих запусках (так как БД имеется), он будет читать данные
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы