我的 java 数据库备份代码出错
An Error in my java database backup code
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 服务器数据库的 Java Swing 应用程序,现在我想在我的 java swing 应用程序中提供备份和恢复选项,只需单击一个按钮.
它应该备份数据库并恢复数据库任何可能性这是我的备份代码。但是当我 运行 这段代码总是 (Processcomplete == 2)
这段代码有什么错误?
您的代码中存在许多问题。我会尽力解释它们。但第一个是我看到的最大错误 return 错误代码 2.
File names cannot contain special characters like /
.
我在您的代码中看到的主要问题之一是您尝试保存的文件名。 Windows 不允许输入 /
或 \
作为文件名。所以在文件名中添加 YYYY/MM/DD
不是一个好主意。
Only one backup file per day
通过仅添加日期,您每天只能创建一个备份文件,当试图在同一天获得多个备份时,相同的文件将被替换。使用 util.Date
对象的 getTime()
获取每毫秒刷新一次的唯一编号。
替换这部分;
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();
}
以上两个问题都解决了。
Giving the absolute path of mysqldump.exe
is a bad idea
因为在不同的电脑上可能会有所不同。您已将 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);
文件命名部分有问题,现在应该可以了。
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 服务器数据库的 Java Swing 应用程序,现在我想在我的 java swing 应用程序中提供备份和恢复选项,只需单击一个按钮.
它应该备份数据库并恢复数据库任何可能性这是我的备份代码。但是当我 运行 这段代码总是 (Processcomplete == 2)
这段代码有什么错误?
您的代码中存在许多问题。我会尽力解释它们。但第一个是我看到的最大错误 return 错误代码 2.
File names cannot contain special characters like
/
.
我在您的代码中看到的主要问题之一是您尝试保存的文件名。 Windows 不允许输入 /
或 \
作为文件名。所以在文件名中添加 YYYY/MM/DD
不是一个好主意。
Only one backup file per day
通过仅添加日期,您每天只能创建一个备份文件,当试图在同一天获得多个备份时,相同的文件将被替换。使用 util.Date
对象的 getTime()
获取每毫秒刷新一次的唯一编号。
替换这部分;
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();
}
以上两个问题都解决了。
Giving the absolute path of
mysqldump.exe
is a bad idea
因为在不同的电脑上可能会有所不同。您已将 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);
文件命名部分有问题,现在应该可以了。