Как опубликовать приложение 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 ответ:
Хорошо, мой друг-идиот.. Приложение работает как заклинание на двух разных машинах.
Вероятно, он не поместил файл
.db
в тот же каталог в первую очередь и запуск.jar
в одиночку создал пустую схему базы данных, которая вызвала сообщение об ошибке.Так что для любого другого, спрашивающего то же самое:
Нет нет необходимости включать
sqlite.exe
илиsqlite.dll
при публикации настольного приложения JAVA с использованием базы данных SQLite. Просто упакуйте JDBC драйвер с runnable.jar
и приложение работает нормально.