@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
  • Вопрос задан
  • 2572 просмотра
Пригласить эксперта
Ответы на вопрос 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. Можете при первом запуске программы создать БД и все. А уже при последующих запусках (так как БД имеется), он будет читать данные
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
25 апр. 2024, в 10:42
150000 руб./за проект
25 апр. 2024, в 10:41
2000 руб./за проект
25 апр. 2024, в 10:25
2000 руб./за проект