C#でMySQLデータベースのバックアップリストア操作を行う
一、cmdコマンドの実行
二、データベース全体のバックアップ
ここでm_UserId, m_Pwd, m_DataBaseNameは、データベースのユーザー名、パスワード、バックアップするデータベース名です.データベース操作クラスに統合されているため、パラメータはリストされていません.
三、データベースの復元
四、使用するその他の関数
///
/// cmd
///
///
///
public string StartCmd(string workingDirectory, string command)
{
string strOutput = "";
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/C" + command;// "/c"
p.StartInfo.WorkingDirectory = workingDirectory;
p.StartInfo.UseShellExecute = false;// shell
p.StartInfo.RedirectStandardInput = true;//
p.StartInfo.RedirectStandardOutput = true;//
p.StartInfo.RedirectStandardError = true;//
p.StartInfo.CreateNoWindow = true;//
// CMD ???
try
{
if (p.Start())//
{
p.WaitForExit();// ,
strOutput = p.StandardOutput.ReadToEnd();//
}
}
catch (Exception exp)
{
MessageBox.Show(exp.Message, " ");
}
finally
{
if (p != null) p.Close();
}
return strOutput;
}
二、データベース全体のバックアップ
ここでm_UserId, m_Pwd, m_DataBaseNameは、データベースのユーザー名、パスワード、バックアップするデータベース名です.データベース操作クラスに統合されているため、パラメータはリストされていません.
///
///
///
/// mySql
/// mySql
///
public string BackUpDB()
{
string strFilePath = "";
SaveFileDialog sf = new SaveFileDialog();
sf.Filter = " (*.sql)|*.sql";
sf.CheckPathExists = true;
sf.AddExtension = true;//
sf.OverwritePrompt = true;// ,
sf.FileName = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".sql";//
if (sf.ShowDialog() == DialogResult.OK)
{
// mysqldump -u -p -h --datebases dbname1 dbname2...dbnamen>
// “--” sql , “/*!40014” MySQL
string strCmd = string.Format("mysqldump -u{0} -p{1} {2}>{3}", m_UserId, m_Pwd, m_DataBaseName,
sf.FileName);//
string strDbPath = GetMySqlInstallPath();//mySql
try
{
StartCmd(strDbPath, strCmd);
if (File.Exists(sf.FileName))
{
MessageBox.Show(" ! :" + sf.FileName, " ");
strFilePath = sf.FileName;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
return strFilePath;
}
三、データベースの復元
///
///
///
/// mySql
/// mySql
///
public string RestoreDB()
{
string strFileName = string.Empty;
if (XtraMessageBox.Show(" , !", " ", MessageBoxButtons.YesNo,
MessageBoxIcon.Exclamation) == DialogResult.Yes)
{
OpenFileDialog op = new OpenFileDialog();
op.Title = " ";//
op.Filter = " (*.sql)|*.sql";
op.CheckPathExists = true;
op.RestoreDirectory = true;//
if (op.ShowDialog() == DialogResult.OK)
{
// :mysql -uroot -p1234 dbname
四、使用するその他の関数
///
/// mySql
///
///
public string GetMySqlInstallPath()
{
string strPath = "";
string strSql = "SELECT @@basedir AS basePath From dual";
object obj = GetSingleObject(strSql);
if (obj != null)
{
strPath = obj.ToString();
strPath = strPath.Replace("/", "\\");
strPath += "bin";
}
return strPath;
}