[英]how to restore a database backup file using java
我使用mysqldump命令備份了java中的數據庫,現在我想恢復此文件,這是我的代碼,但是它創建了mysqlid,不響應任何內容,也沒有恢復文件。
restore.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
// JFileChooser fc = new JFileChooser();
//
// fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
// int result = fc.showOpenDialog(frame);
// if (result == JFileChooser.APPROVE_OPTION) {
// File file = fc.getSelectedFile();
// pathTobeSaved = file.getAbsolutePath();
//}
// JOptionPane.showMessageDialog(null, "Starting");
// String cmd = "mysql -u root -h localhost mysqlsarafi < C:\\xampp\\htdocs\\backup.sql";
// JOptionPane.showMessageDialog(null, "Waiting");
Process runtime = Runtime.getRuntime().exec("mysql -u root mysqlsarafi < C:\\xampp\\htdocs\\backup.sql");
JOptionPane.showMessageDialog(null, "Done");
int complete = runtime.waitFor();
JOptionPane.showMessageDialog(null, complete);
if(complete ==0){
JOptionPane.showMessageDialog(null, "Succed");
}
else{
JOptionPane.showMessageDialog(null, "not succed");
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
我為解決這個問題花了一個星期的時間,終於找到了答案。
問題在這一行:
Process runtime =
Runtime.getRuntime().exec("mysql -u root mysqlsarafi < C:\\xampp\\htdocs\\backup.sql");
上面的代碼中的<
稱為流重定向。 你可以在這里閱讀。
不幸的是,在使用java.lang.Runtime
情況下執行進程時不能使用流重定向(它根本不起作用)。
。
因此,您必須在不使用流重定向的情況下執行此操作。 一種方法是:
mysql -u root --execute "SOURCE C:\\path\\to\\backup.sql"
。
為了使您的工作更輕松,適合您的解決方案是:
String cmd = "mysql -u root mysqlsarafi --execute \"SOURCE C:\\xampp\\htdocs\\backup.sql\"";
Process runtime = Runtime.getRuntime.exec(cmd);
如果您發現我的答案有用,請發表評論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.