使用javagui的MYSQL备份

使用javagui的MYSQL备份,java,mysql,mysqldump,restore,database-backups,Java,Mysql,Mysqldump,Restore,Database Backups,我正在尝试备份我的数据库,这是我编写的代码,但由于某些原因,它没有备份??我使用的是localhost(MAMP),我使用的操作系统是macosx public boolean databaseBackup(String dbName, String dbUserName, String dbPassword, String path) { String qu = "/Applications/MAMP/Library/bin/mysqldump -u" + dbUserName

我正在尝试备份我的数据库,这是我编写的代码,但由于某些原因,它没有备份??我使用的是
localhost(MAMP)
,我使用的操作系统是
macosx

public boolean databaseBackup(String dbName, String dbUserName, String dbPassword, String path) {
        String qu = "/Applications/MAMP/Library/bin/mysqldump -u" + dbUserName + " -p" + dbPassword + " --database" + dbName + " -r " + path;

System.out.println(qu);

Process runtimeProcess;

Properties pr = new Properties();

pr.setProperty("user", "username");

pr.setProperty("password", "password");

    Connection con = null;

    PreparedStatement stmt = null;

    try {
        con = DriverManager.getConnection("jdbc:mysql://localhost:8889/Database", pr);
        runtimeProcess = Runtime.getRuntime().exec(qu);
        int processComplete = runtimeProcess.waitFor();
        if (processComplete == 0) {
            System.out.println("5");

            System.out.println("Backed up");
            return true;
        } else {
            System.out.println("Not Backed up");
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return false;
}
code.databaseBackup("Database","root", "root", "/Users/dipeshramesh/Dropbox/TeamProject/TeamProject2.sql");
}

code.databaseBackup("Database","root", "root", "/Users/dipeshramesh/Dropbox/TeamProject/TeamProject2.sql");

在我的jframe表格中,我写道:

code.databaseBackup("Database","root", "root", "/Users/dipeshramesh/Dropbox/TeamProject/TeamProject2.sql");
因此,当一个人按下备份按钮时,它会调用
code.databaseBackup
方法并执行其任务

code.databaseBackup("Database","root", "root", "/Users/dipeshramesh/Dropbox/TeamProject/TeamProject2.sql");
如果我运行此命令,它会显示一条消息“未备份”,有人知道吗?

使用
字符串qu=“/Applications/MAMP/Library/bin/mysqldump-u”+dbUserName+“-p”+dbPassword+“--database”+dbName+“>”+path

code.databaseBackup("Database","root", "root", "/Users/dipeshramesh/Dropbox/TeamProject/TeamProject2.sql");

command-
/Applications/MAMP/Library/bin/mysqldump-u yourUser-p--opt yourdb>yourdump.sql

您应该使用ProcessBuilder,因为它简化了构建进程的过程:p。特别是,它允许您将参数作为数组中的单独元素传递,这允许Java更好地与本机API级别交互,包括参数中的空格;)-您还忽略了流程的任何输出,这可能会向您证明流程失败的原因。请提供一个示例。我是否可以改进此代码以使备份正常工作。我只是想备份到工作看看一个基本的例子我看到了这个例子,但问题是我使用的是mac OSX和windows有不同的路径—从C://等开始。。。但是我原来的命令可以工作,但是它只备份.sql文件,文件中没有任何数据??没有区别。要执行的命令是/Applications/MAMP/Library/bin/mysqldump,它将成为命令数组中的第一个元素,之后的每个参数将成为一个单独的数组。我一直在windows和Mac上使用此方法使用字符串qu=“/Applications/MAMP/Library/bin/mysqldump-u”+dbUserName+“-p”+dbPassword+“--database”+dbName+“>”+path;此命令不适用于我,它显示相同的消息。然而,我的原始命令可以工作,但它只备份.sql文件,该文件中没有任何数据??请尝试单独执行该命令,如果该命令工作正常,则问题可能是在java中构建该命令。我尝试在终端it dose backup中运行该命令。在我的GUI中,当我按下“备份”按钮时,它创建了一个.sql文件。但是当我打开它的时候,它只显示了被评论的部分,而不是实际的数据。实际上它起作用了:)问题是我添加了一个额外的语音标记,停止了备份。谢谢大家的帮助。
code.databaseBackup("Database","root", "root", "/Users/dipeshramesh/Dropbox/TeamProject/TeamProject2.sql");