在我的Java数据库备份代码中的错误
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
public class Backup extends javax.swing.JFrame {
String path = null;
String filename;
public Backup() {
initComponents();
setLocationRelativeTo(null);
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser fc = new JFileChooser();
fc.showOpenDialog(this);
String date = new SimpleDateFormat("YYYY/MM/dd").format(new Date());
try {
File f = fc.getSelectedFile();
path = f.getAbsolutePath();
path = path.replace("\\", "/");
path = path + " _ " + date + ".sql";
jTextField5.setText(path);
} catch (Exception e) {
e.printStackTrace();
}
Process p;
try {
Runtime runtime = Runtime.getRuntime();
p = runtime.exec("C:/Program Files/MySQL/MySQL Server5.1/bin/mysqldump.exe -u root -p123 --add-drop-database -B tsms -r" + path);
int Processcomplete = p.waitFor();
System.out.println(p);
System.out.println("" + Processcomplete);
if (Processcomplete == 0) {
JOptionPane.showMessageDialog(rootPane, "Database Backup Successfully");
} else {
JOptionPane.showMessageDialog(rootPane, "Error");
}
jTextField5.setText(null);
System.gc();
} catch (Exception e) {
e.printStackTrace();
System.gc();
}
}
}
我已经开发了与MySQL Server数据库的Java Swing应用程序,现在我想提供备份和我的Java Swing应用程序,它是一个按钮,点击恢复选项。在我的Java数据库备份代码中的错误
它应该备份数据库和恢复数据库的任何可能性,这是我的备份代码。但是当我总是运行这个代码(Processcomplete == 2)
这段代码中的错误是什么?
您的代码中存在许多问题。我会尽力解释他们。但是,第一个是我看到返回错误代码2.
文件名不能包含像
/
特殊字符的最大的错误。
我在代码中看到的一个主要问题是您试图保存的文件名。 Windows不允许输入/
或\
作为文件名。因此,将YYYY/MM/DD
添加到文件名不是一个好主意。每天
只有一个备份文件中加入只有日期试图让多个备份在同一天时,你可以每天创建相同的文件将被替换只有一个备份文件。使用
getTime()
的util.Date
对象来获取每毫秒刷新的唯一编号。更换此零件;
try { File f = fc.getSelectedFile(); path = f.getAbsolutePath(); path = path.replace("\\", "/"); path = path + " _ " + new Date().getTime() + ".sql"; jTextField5.setText(path); } catch (Exception e) { e.printStackTrace(); }
上述两个问题都由此解决。
给予的
mysqldump.exe
绝对路径是一个坏主意因为在不同的计算机上它可能会改变。您已将
C:/Program Files/MySQL/MySQL Server5.1/bin/mysqldump.exe
作为路径,而不是在安装MySQL后将其添加为环境变量,只需使用mysqldump.exe
即可。p = runtime.exec("mysqldump.exe -u root -p123 --add-drop-database -B tsms -r" + path);
文件命名的部分是问题,应该现在的工作。
文件名是问题所在。竖起大拇指! –
使用'getErrorStream()'从进程读取错误 –