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

我正在使用下面显示的代码:

 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

最佳答案

请参阅的javadoc:

返回:此Process对象表示的子流程的退出值。按照惯例,值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

10-07 13:27