有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

我想备份数据库的java桌面应用程序系统

我已经创建了一个桌面应用程序系统,我想在其中备份数据库

我使用的代码如下所示:

 process p = null;
 p = runtime.exec("E:/xampp/mysql/bin/mysqldump -uroot --add-drop-database -B clinic_management -r "+path+".sql");

 int processComplite = p.waitFor();

 System.out.println("processComplite" + processComplite);

 if(processComplite==0) {
      JOptionPane.showMessageDialog(null, "<html><center> backup complite<br> Check this folder<br>"+path+"</center><html>");
      jTextField1.setText("");
 } else {
       JOptionPane.showMessageDialog(null, " backup  not complite");
 }

它在某些系统中运行良好,但有时会显示出来

 processComplite=1

共 (1) 个答案

  1. # 1 楼答案

    有关waitFor(),请参见javadoc:

    返回:此流程对象表示的子流程的退出值。按照惯例,值0表示正常终止

    换句话说:你的数据库操作失败了。你可以做两件事:

    • 检查mysqldump是否生成日志文件;看看里面能不能找到什么
    • 到目前为止,在进行该进程调用时,完全忽略任何将写入stdout/stderr的输出

    意思:您可以通过以下操作访问由msqldump编写的潜在的

     InputStream stdout = p.getInputStream();
     InputStream stderr  = p.getErrorStream();
     int returnCode = p.waitFor();
     if (returnCode == 0) {
       ... give positive message
     } else {
       read data from streams and display those