簡體   English   中英

如何使用Java還原數據庫備份文件

[英]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();
                }



            }
        });

可能是重復線程,但現在看看這些類似的android問題-

恢復SQLite數據庫文件

它可以備份並在android中還原數據庫文件嗎? 非根設備

我為解決這個問題花了一個星期的時間,終於找到了答案。

問題在這一行:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM