Как опубликовать приложение Java desktop с помощью базы данных SQLite


Я имею в виду, какие файлы я должен предоставить конечному пользователю, чтобы правильно выполнить приложение?

Я могу запустить приложение в своей системе разработки, используя только myapp.jar & myapp.db файлы в той же папке. Но когда я попытался поделиться им с другом, он не смог загрузить базу данных..

Должен ли я также включить файлы sqlite.dll или sqlite.exe в каталог приложения?

Примечание: база данных используется для извлечения и хранения данных во время во время выполнения.

Редактировать: Его приложение качели, так что у меня есть всплывающее сообщение об ошибке, чтобы появиться, когда база данных или ее схема отсутствуют. Вот код:

public boolean DBExists(Connection con,String dbName) {
  Statement stmt = null;
    ResultSet res = null;     
    try
  {
      String sql = "SELECT name FROM sqlite_master WHERE TYPE='table';";
      stmt = con.createStatement();
        res = stmt.executeQuery(sql);
  }
  catch(SQLException e)
  {
      System.out.println("Error creating or running SELECT statement: " + e.toString());
  }
    try {
      if (res.next()) {
          System.out.println("Database checked!");
          return true;
      } else {
          System.out.println("Database doesnt exist!");
          return false;
      }
    } catch (SQLException e) {
      System.out.println("Error processing results: " + e.toString());
    }
    System.out.println("Problem while checking database availability.");
    return false;
}

" база данных не существует!- сообщение сработало.

Править #2:

Вот также метод соединения, который вызывает проверку DBExist ():

public Connection DBConnect() {
    //STEP 1: Setup the Driver
    try
    {
        //Load the JDBC driver class dynamically.
        Driver d = (Driver)Class.forName(DRIVER).newInstance();
        DriverManager.registerDriver(d);
        System.out.println("Driver loaded successfuly!");
    }
    catch(Exception e)
    {
        System.out.println("Error loading database driver: " + e.toString());
        return null;
    }

    //STEP 2: Create connection to database using database URL
    Connection con;
    try
    {
        //FIXME: Load database filename via external config.
        con = DriverManager.getConnection(URL);
        System.out.println("Database connection successfull!");
        if (!DBExists(con,DB_NAME)) {
            JOptionPane.showMessageDialog(null,
                    "Database file was not found!",
                    "Database Fatal Error",
                    JOptionPane.ERROR_MESSAGE);
            System.exit(0);
        }
    }
    catch(SQLException e)
    {
        System.out.println("Error creating connection: " + e.toString());
        return null;
    }
    return con;          
}
1 3

1 ответ:

Хорошо, мой друг-идиот.. Приложение работает как заклинание на двух разных машинах.

Вероятно, он не поместил файл .db в тот же каталог в первую очередь и запуск .jar в одиночку создал пустую схему базы данных, которая вызвала сообщение об ошибке.

Так что для любого другого, спрашивающего то же самое:

Нет нет необходимости включать sqlite.exe или sqlite.dll при публикации настольного приложения JAVA с использованием базы данных SQLite. Просто упакуйте JDBC драйвер с runnable .jar и приложение работает нормально.