在java中备份mysql [xampp]数据库

时间:2017-12-07 16:43:25

标签: java mysql xampp

所以我还在学习编程,我正在创建一个可以备份数据库的简单应用程序,但问题是当我单击按钮进行备份时,没有任何反应,它甚至没有显示" can'创建备份"。我正在使用xampp,以防相关。我不知道为什么它不起作用,我真的好奇它背后的原因是什么,任何帮助将不胜感激。

...
String path = null;
String filename;

//choose where to backup

 private void jButtonLocationActionPerformed(java.awt.event.ActionEvent evt)   {                                         
    JFileChooser fc = new JFileChooser();
    fc.showOpenDialog(this);
    String date = new SimpleDateFormat("MM-dd-yyy").format(new Date());

    try {
        File f = fc.getSelectedFile();
        path = f.getAbsolutePath();
        path = path.replace('\\', '/');
        path = path+"_"+date+".sql";
        jTextField1.setText(path);

    } catch (Exception e) {
        e.printStackTrace();
    }
} 

//backup
private void jButtonBackUpActionPerformed(java.awt.event.ActionEvent evt) {                                         
    Process p = null;


    try{
        Runtime runtime = Runtime.getRuntime();

        p=runtime.exec("C:/xampp/mysq/bin/mysqldump -u root --add-drop-database -B capstone -r "+path);

        int processComplete = p.waitFor();
        if (processComplete==0) {
            jLabel1.setText("Backup Created Success!");
        } else {
            jLabel1.setText("Can't create backup.");
        }
    } catch (Exception e) {

    }


} 

3 个答案:

答案 0 :(得分:0)

您在try-catch中使用jButtonBackUpActionPerformed块,但catch语句为空。因此,如果由于某种原因引发异常,则不会写入任何文件,也不会输出任何内容。您可以尝试在其他按钮的e.printStackTrace()语句中使用catch进行调试。

答案 1 :(得分:0)

由于斯坦,我发现了潜在的问题。这是一个拼写错误的问题,而不是“mysql”,我把“mysq”谢谢你们!

  java.io.IOException: Cannot run program "C:/xampp/mysq/bin/mysqldump.exe": CreateProcess error=2, The system cannot find the file specified

答案 2 :(得分:0)

这将在Linux服务器上运行任何shell脚本。在Windows上测试...也应该工作

 public static int executeExternalScript(String path) throws InterruptedException, IOException {

  ProcessBuilder procBuilder = new ProcessBuilder(path); 
  procBuilder.redirectErrorStream(true);
  Process process = procBuilder.start();
  BufferedReader brStdout = new BufferedReader(new InputStreamReader(process.getInputStream()));

  String line = null;
  while((line = brStdout.readLine()) != null) {   logger.info(line);   }
      int exitVal = process.waitFor();
      brStdout.close();
      return exitVal;}