【发布时间】:2017-03-01 10:06:00
【问题描述】:
我已经创建了一个桌面应用系统,我想在其中备份数据库。
我正在使用如下所示的代码:
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
【问题讨论】:
-
请阅读 Oracle 教程 EventDispatchThread,尤其是关于 SwingWorker 的部分,简短说明 ---> Swing API 的所有事件都必须在 EDT 上完成,并且您的代码在显示 JOptionPane 时存在问题
-
@mKorbel 你没有抓住重点。他不明白“完整”不是完整;但是执行该转储调用的返回代码...并且 != 0 意味着。转储失败。
-
@GhostCat 我只评论了 EDT,:-) 除了 MySQL 有相当/非常好的设计 JDBC API,那么也许没有理由使用(错误想法的解释)runtime.exec作为这里的答案
标签: java mysql swing runtime database-backups