我创建了一个桌面应用程序系统,要在其中备份数据库。
我正在使用下面显示的代码:
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