从C#复制MySQL数据库

本文关键字:数据库 MySQL 复制 | 更新日期: 2023-09-27 18:00:19

我想使用C#复制/复制数据库。我尝试了以下方式,但它给了我一个错误,说检查mysql语法。

string connStr = "server=localhost;user=root;port=3306;";
            MySqlConnection conn = new MySqlConnection(connStr);
            MySqlCommand cmd;
            string s0;
            try
            {
                conn.Open();
                s0 = "mysqldump -h localhost -u root -p testdb | mysql -h localhost -u root -p `"+dbname+"`;";
                cmd = new MySqlCommand(s0, conn);
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            } 

MySQL数据库没有密码。有人能告诉我这个代码有什么问题吗?谢谢

从C#复制MySQL数据库

您正试图像运行SQL命令一样运行可执行文件。事实并非如此。

mysqldump是存在于文件系统中的可执行文件。要执行此应用程序并以这种方式备份数据库,您必须使用Shell。在C#中,您可以使用System.Diagnostics.Process在进程中运行它。

如果您只使用-p参数编写调用代码,mysqldump将要求输入密码,当然您无法输入密码,因为您不是从命令窗口运行它。

您必须在通话中传递密码,即-pAValidPassword(无空格)

当然,这是一种非常不安全的方式,因为任何能够访问您代码的人现在都可以访问密码!!

文档