アプリケーションを正しく実行するには、どのファイルをエンドユーザーに提供する必要がありますか?
myapp.jar
同じフォルダー内の&myapp.db
ファイルのみを使用して、開発システムでアプリを実行できます。しかし、友人と共有しようとしたとき、彼はデータベースをロードできませんでした..
sqlite.dll
またはsqlite.exe
ファイルもアプリケーション ディレクトリに含める必要がありますか?
注:データベースは、実行時にデータを取得および保存するために使用されます。
編集: SWING アプリケーションなので、データベースまたはそのスキーマが見つからない場合にポップアップ エラーが表示されます。コードは次のとおりです。
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;
}