2013-02-18 77 views
3

我使用following code来备份MYSQL数据库。使用MySqlBackup.NET导出数据库时出现异常

private void button2_Click(object sender, EventArgs e) 
    { 
     string file = "D:\\backup.sql"; 
     //string conn = "server=localhost;user=root;pwd=qwerty;database=test;"; 
     String str = @"server=192.168.1.219;database=abc;userid=sha;password='123';"; 
     MySqlBackup mb = new MySqlBackup(str); 
     mb.ExportInfo.FileName = file; 
     mb.Export(); 
    } 

我的堆栈跟踪如下 -

A first chance exception of type 'System.NullReferenceException' occurred in MySqlBackup.dll 
System.Transactions Critical: 0 : <TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Critical"><TraceIdentifier>http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/Unhandled</TraceIdentifier><Description>Unhandled exception</Description><AppDomain>TestAppMysqlDBConnect.vshost.exe</AppDomain><Exception><ExceptionType>System.NullReferenceException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType><Message>Object reference not set to an instance of an object.</Message><StackTrace> at MySql.Data.MySqlClient.MySqlBackup.ExportExecute() 
    at MySql.Data.MySqlClient.MySqlBackup.Export() 
    at TestAppMysqlDBConnect.Form1.button2_Click(Object sender, EventArgs e) in C:\Users\Shashika\Documents\Visual Studio 2010\Projects\TestAppMysqlDBConnect\TestAppMysqlDBConnect\Form1.cs:line 52 
    at System.Windows.Forms.Control.OnClick(EventArgs e) 
    .. 

但是有一个例外,并说,有一个空引用异常。当我通过C#程序将数据传递给数据库时。它被成功插入没有例外。这个异常只发生在当我尝试通过C#程序备份数据库时。我使用了上面链接的2个Dll文件。这些是 - MySql.Data.dll MySqlBackup.dll

我无法解决此异常。请帮忙。

Exception

+0

请包括*文本副本的堆栈跟踪* 。它显示在右下角的框架中。 – 2013-02-18 05:53:11

+0

@pst - 我想我现在收录它 – Shashika 2013-02-18 06:14:40

+0

@pst - 很抱歉。我认为这是你想要的。不是吗? – Shashika 2013-02-18 07:00:56

回答

0

尝试使用此功能(不要忘记,你必须MySqlBackup.dll添加到您的项目引用):

public void Backup() 
    { 
     try 
     { 
      // Backup... 
      DateTime Time = DateTime.Now; 
      year = Time.Year; 
      month = Time.Month; 
      day = Time.Day; 
      hour = Time.Hour; 
      minute = Time.Minute; 
      second = Time.Second; 
      millisecond = Time.Millisecond; 

      //Save file to Path with the current date as a filename 
      string path; 
      path = txb_Path.Text + year + "-" + month + "-" + day + "--" + hour + "-" + minute + "-" + second + ".sql"; 
      string file = path; 
      using (MySqlConnection conn = new MySqlConnection(connectionString)) 
      { 
       using (MySqlCommand cmd = new MySqlCommand()) 
       { 
        using (MySqlBackup mb = new MySqlBackup(cmd)) 
        { 
         cmd.Connection = conn; 
         conn.Open(); 
         mb.ExportToFile(file); 
         conn.Close(); 
        } 
       } 
      } 
      //Done---- 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error , unable to backup!" + ex.Message); 
     } 
    }