0

これは、データベースをエクスポートするために作成したコードです。問題は、ファイルがエクスポートされず、コードにエラーメッセージが表示されないことです。

public boolean exportDatabase(String fromServer,
                              String FileName,
                              String FilePath,
                              int ExportOpions) {
  try {     
    String dbName ="NMSAzzist";
    String dbUser = "root";
    String dbPass ="root";  
    String dumbPath = "C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\";
    String executeCmd = dumbPath+"mysqldump -u "+dbUser+ "-p"+dbPass+" "+dbName+ "-r "+FilePath+ "";
    Process runtimeProcess = Runtime.getRuntime().exec(executeCmd);
    int processComplete = runtimeProcess.waitFor();
    if (processComplete == 1) { // if values equal 1 process failed
      JOptionPane.showMessageDialog(null, "Backup Failed");//display message
    } else if (processComplete == 0) {
      JOptionPane.showMessageDialog(null, "\n Backup created Successfully..");
      // display message
    }
    return true;
  } catch (final Exception ex) {
    NmsLogger.writeErrorLog("Database Connection Failed ", ex.toString());
    NmsLogger.writeDebugLog(ex);
    return false;
  }

FilePath名前の変数で指定されたパスにデータベースをエクスポートするにはどうすればよいFileNameですか?どうすれば問題を解決できますか?

そしてところで、私は同じものをインポートするために以下を使用できますか?

String[] executeCmd = new String[]{"mysql", databaseName, "-u" + userName, "-p" + password, "-e"  + FileName };
4

3 に答える 3

1

ファイル名を忘れませんでしたか?

String executeCmd =dumbPath+"mysqldump -u "+dbUser+ "-p"+dbPass+" "+dbName+ "-r "+FilePath+"\\"+Filename"";
于 2012-09-07T07:09:30.850 に答える
1

次のようにします:

// you did not give file name.
String executeCmd = "cmd " + dumbPath+"mysqldump -u "+dbUser+ "-p"+dbPass+" "+dbName+ "-r "+FilePath+ "\\" + filename;

// I tried running I am getting error code 13.

私はあなたが作るべきだと思います:

if(processComplete != 0) {
   //error with error code
} else {
   //success
} 

それ以外の

if (processComplete == 1) {// if values equal 1 process failed
      System.out.println("Backup failed");
}

else if (processComplete == 0) {
      System.out.println("Backup Success");
}

返されるエラーコードは0と1以外である可能性があるためです。

提案:Apache Commons exec APIを使用してください。これは、よりも洗練されていRuntime.execます。

于 2012-09-07T07:17:36.117 に答える
1

最初にexecuteCmdをdbで正常に実行できるようにしてみてください。executeCmdには構文エラーがあります。あなたのコードは実行コマンドにファイル名を残しました

String executeCmd = "/" + dumbPath + "mysqldump -u " + dbUser
                    + " -p" + dbPass + " " + dbName + " -r " + FilePath + "\\"
                    + FileName;

マニュアルを確認してください

これは私のために働きます。

public class exportDataBase {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        exportDatabase("", "Sma_test.sql", "C:", 0);

    }

    public static boolean exportDatabase(String fromServer, String FileName,
            String FilePath, int ExportOpions) {
        try {

            String dbName = "dmsdev";
            String dbUser = "root";
            String dbPass = "root";

            String dumbPath = "C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\";

            String executeCmd = "/" + dumbPath + "mysqldump -u " + dbUser
                    + " -p" + dbPass + " " + dbName + " -r " + FilePath + "\\"
                    + FileName;

            System.out.println(executeCmd);
            Process runtimeProcess = Runtime.getRuntime().exec(executeCmd);
            int processComplete = runtimeProcess.waitFor();

            System.out.println("processComplete: " + processComplete);

            if (processComplete == 1) {// if values equal 1 process failed
                System.out.println("Backup failed");
            }

            else if (processComplete == 0) {
                System.out.println("Backup Success");

            }
            return true;
        } catch (final Exception ex) {
            System.out.println("Connection failed");
            return false;
        }
    }

}
于 2012-09-07T07:49:43.570 に答える