-2

我正在尝试使用 mysqlBackUp 2.0.4 使用以下代码备份我的数据库

private void button9_Click_1(object sender, EventArgs e)
        {
            try
            {
                string constring = "Data Source=localhost;User Id=root;Password=sulyman;database=accounting_db";
                MySqlConnection conn = new MySqlConnection(constring);
                string file = "D:\\backup.sql";
                cmd = new MySqlCommand();
                cmd.Connection = conn;
                dal.Open();
                MySqlBackup ba = new MySqlBackup(cmd);
                ba.ExportToFile(file);
                dal.close();
                MessageBox.Show("done");
            }
            catch(Exception ex)
            { MessageBox.Show(ex.Message); }


        }

但我得到了错误

a object reference note set to an instance of an object

在线

 ba.ExportToFile(file);

请问我的代码哪里错了

4

1 回答 1

1

问题:似乎数据库连接未打开,或者您使用dal.Open()的是conn.Open().

  1. 我已评论dal.Open();dal.Close();添加conn.Open();
  2. 内部MySqlCommand方法。
  3. 添加using声明

试试这个代码:

private void button9_Click_1(object sender, EventArgs e)
    {
        try
        {
            string constring = "Data Source=localhost;User Id=root;Password=sulyman;database=accounting_db";
            string file = "D:\\backup.sql";
            using(MySqlConnection conn = new MySqlConnection(constring))                
            using(MySqlCommand cmd = new MySqlCommand())
            {
                cmd.Connection = conn;
                conn.Open(); //dal.Open();
                using(MySqlBackup ba = new MySqlBackup(cmd))
                {
                   ba.ExportToFile(file);
                   //dal.close();
                   MessageBox.Show("done");
                }
            }

        catch(Exception ex)
        { MessageBox.Show(ex.Message); }

    }
于 2014-09-01T01:21:17.353 回答