2014-09-01 63 views
-2

我尝试用代码来备份我的数据库使用以下2.0.4 mysqlBackUpMysqlbackup错误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); 

哪里是错我的代码,请

+0

粘贴整个堆栈跟踪。我怀疑它是在上一行实例化'ba'之后的那一行。也可以尝试在代码的第一行放置一个断点,然后逐步查看“null”。 – 2014-09-01 01:15:46

+0

为什么在此方法之外保存'MySqlCommand cmd;'声明?而'dal'是什么? – Hassan 2014-09-01 01:16:37

回答

1

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

  1. 我评论dal.Open();dal.Close();并加入conn.Open();
  2. Delcared 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); } 

    } 
+1

是的,这是正确的。我纠正它,而你写解决方案 达尔是我的连接类,我用它来打开和关闭连接,但在这里我使用不同的连接 非常感谢哈桑尼萨 – Sulyman 2014-09-01 01:37:18