Javaで開発したデスクトップアプリケーションの1つに「バックアップの作成」オプションを追加しようとしています。私はこれについて多くのことを検索し、この問題を解決するためのいくつかのアプローチを見つけましたが、それらはすべて、単一の重要な概念「移植性」を破壊します。多くの人がこれを行うためにmysqldump.exe(Windows内)を使用することを提案していますが、このアプローチを取るにはmysqlインストールフォルダーを知る必要があると思います。ちなみに正しく動作しなかった推奨コードは以下のとおりです(理由はわかりませんが、理由に気づいたら教えてください)
private static String dbName = "shams";
private static String dbUserName = "root";
private static String dbPassword = "";
public static boolean backupDB(File file) {
String path = file.getPath();
if (!path.contains(".sql")) {
file = new File(path +".sql");
}
String executeCmd = "mysqldump -u " + dbUserName + " -p" + dbPassword + " --add-drop-database -B " + dbName + " -r " + file.getPath();
Process runtimeProcess;
try {
runtimeProcess = Runtime.getRuntime().exec(executeCmd);
int processComplete = runtimeProcess.waitFor();
if (processComplete == 0) {
System.out.println("Backup created successfully");
runtimeProcess.destroy();
return true;
} else {
System.out.println("Could not create the backup");
}
} catch (Exception ex) {
ex.printStackTrace();
}
return false;
}
また、データベースを特定の場所にコピーすることを提案する人もいます。
だから..私はこれにきちんと何をすべきですか?利用可能なサードパーティのjarファイルはありますか?
- 編集 - -
指定されたコードの問題は、ユーザー(この場合はrootユーザー)のパスワードがない場合、コマンドでパスワードを指定しないようにすることです。コマンドは次のようになります。 String executeCmd = "mysqldump -u " + dbUserName + " --add-drop-database -B " + dbName + " -r " + file.getPath();
また、結局、mysqlインストールフォルダを指定する必要はありません。上記のコードはそのまま動作します。