繁体   English   中英

如何使用mysql和c#.net备份数据库

[英]how to backup the database using mysql and c#.net

我找到了这个使用 c#.net 备份我的数据库 (mysql) 的解决方案

string fname = txtFileName.Text;


if (fname == "")
{

 MessageBox.Show("Please Enter the File Name!");return;
}

try
{

      btnBackup.Enabled = false;
      DateTime backupTime = DateTime.Now;

      int year = backupTime.Year;
      int month = backupTime.Month;

      int day = backupTime.Day;
     int hour = backupTime.Hour;

      int minute = backupTime.Minute;
     int second = backupTime.Second;

     int ms = backupTime.Millisecond;
    String tmestr = backupTime.ToString();

 // C:\Program Files\MySQL\MySQL Server 5.0\bin

   //tmestr = "C:\\" + year + "-" + month + "-" + day + "-" + hour + "-" + minute + ".bak";

    tmestr = "C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\" + fname + year + "-" + month + "-" + day + "-" + hour;// +".sql";

   StreamWriter file = new StreamWriter(tmestr);
  ProcessStartInfo proc = new ProcessStartInfo();

    string cmd = string.Format(@"-u{0} -p{1} -h{2} {3}", user, passwd1, Data_Source, dbname);
     proc.FileName = "mysqldump";

   proc.RedirectStandardInput = false;
   proc.RedirectStandardOutput = true;

   proc.Arguments = cmd;//"-u root -p smartdb > testdb.sql";

   proc.UseShellExecute = false;
   Process p = Process.Start(proc);

   string res;
   res = p.StandardOutput.ReadToEnd();

  file.WriteLine(res);

   p.WaitForExit();

  file.Close();

  MessageBox.Show("DataBase Backup Has Been Completed Successfully!");btnBackup.Enabled = true;
}

catch (IOException ex)
{

  MessageBox.Show("Disk full or other IO error , unable to backup!");
}

txtFileName.Text = "";

我必须在此文本框中给出的值"txtfilename.txt"

以及我必须在此值中给出的内容@"-u{0} -p{1} -h{2} {3}", user, passwd1, Data_Source, dbname

我在这个位置找到了 mysqldump.exe 文件

string location = "C:\\Program Files\\MySQL\\MySQL WorkBench 5.2CE\\";

这是我的连接字符串

string connestring = "server=localhost;user=root;database=access";

我不确定我必须在这些地方提供哪些值user, passwd1, Data_Source, dbname

任何人都可以帮助这些家伙吗

非常感谢..

首先,您应该使用的 mysqldump.exe 的位置与 mysql 本身位于同一目录中(例如 C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin),使用该位置而不是其他副本。

没有连接字符串。

在父目录(即 C:\\Program Files\\MySQL\\MySQL Server 5.5)中,您将找到配置文件 my.ini,在 [client] 标题下,您可以设置连接设置(用户名/密码等)。 如果您愿意,您可以在启动 mysqldump 进程时将登录信息指定为参数(MySQL 提供了参数列表)。

例如,将转储您指定的数据库中的所有内容(数据、结构、触发器、批次,并在您再次导入时覆盖任何表,根据您的需要使用命令行参数)。

    public static void DumpStructure()
{
    Process sd = null;
    ProcessStartInfo r1 = new ProcessStartInfo(/* Full path to MySqlDump.exe */, "--databases exampleDatabase1 exampleDatabase2 --compress --routines --triggers --add-drop-database --add-drop-table --add-locks --extended-insert --password=YOURPASSWORD --port=8307 --user=YOURUSERNAME --disable-keys --quick --comments --complete-insert --result-file=DUMPEDOUTPUT.sql");

    r1.CreateNoWindow = true;
    r1.WorkingDirectory = /* WHERE MYSQL.EXE IS STORED */;
    r1.UseShellExecute = false;
    r1.WindowStyle = ProcessWindowStyle.Minimized;
    r1.RedirectStandardInput = false;

    sd = Process.Start(r1);
    sd.WaitForExit();

    if (!sd.HasExited) {
        sd.Close();
    }
    sd.Dispose();
    r1 = null;
    sd = null;  
}

如果你想备份你的数据库,你可以只做一个 mysqldump:

我不使用 Windows,但这或多或少应该可以解决问题:使用命令提示符导航到 mysqldump 所在的位置并执行以下命令:

mysqldump -u root -p --databases [我的数据库名称] > file.sql

当提示输入密码时,输入您的密码。

我不确定我是否理解您的问题,但是:

user: the user name for the account you are using to connect to mysql
passwd1: the associated password
Data_Source: the host name of the system that the mysql server is running on
dbname: the name of the database schema you are trying to back up

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM