當我測試當前的應用程序時遇到問題,我經常需要調整應用程序使用的數據庫。在多次失去重要更改後,我編寫了一個程序,將我的數據庫備份到一個文件,然後將文件檢入SubVersion。我發現那個備份應用程序不夠好。如何向控制檯應用程序提供密碼?
數據庫是一個PostgreSQL數據庫,我的備份應用程序調用pg_dump來創建備份文件。 pg_dump在控制檯窗口中執行。當數據庫在我自己的機器上時,它運行良好。但是當我將數據庫移到我們的測試服務器時,pg_dump要求輸入密碼。雖然這不是什麼大問題,但我希望能夠自動提供密碼,因爲它在備份應用程序中可用。
我試着按照我在這裏找到的建議,但pg_dump仍然停止並要求輸入密碼。這裏是我認爲應該提供密碼的代碼:
Process backupProcess = new Process();
backupProcess.StartInfo.UseShellExecute = false;
backupProcess.StartInfo.RedirectStandardInput = true;
backupProcess.StartInfo.FileName = dumpPath + "pg_dump.exe";
backupProcess.StartInfo.Arguments = " --host " + host +
" --port " + port +
" --username " + userName +
" --format custom --blobs --verbose --file " +
"\"" + txtBackupFile.Text + "\" " + dbName;
backupProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
backupProcess.Start();
StreamWriter standardInput = backupProcess.StandardInput;
standardInput.WriteLine("mypassword");
backupProcess.WaitForExit();// Waits here for the process to exit.
謝謝你的幫忙。
ROBR
真的應該cconsider使用Path.Combine(dumpPath,「pg_dump.exe」),而不是「dumpPath +」pg_dump.exe「。 –
謝謝,我沒有意識到這種方法的存在,這比我擔心是否有斜線要好得多。 –