views:

313

answers:

2

I have this code and it is not working but I don't why?

try
{
   saveFileDialog1.Filter = "SQL Server database backup files|*.bak";
   saveFileDialog1.Title = "Database Backup";

   if (saveFileDialog1.ShowDialog() == DialogResult.OK)
   {
      SqlCommand bu2 = new SqlCommand();
      SqlConnection s = new SqlConnection("Data Source=M1-PC;Initial Catalog=master;Integrated Security=True;Pooling=False");

      bu2.CommandText = String.Format("BACKUP DATABASE LA TO DISK='{0}'", saveFileDialog1.FileName);

      s.Open();

      bu2.ExecuteNonQuery();
      s.Close();

      MessageBox.Show("ok");
   }
}
catch (Exception ex)
{
   MessageBox.Show(ex.ToString());
}

and I get this error :

alt text

What is the problem?

+5  A: 

You never tell your SqlCommand which connection to use (this is what the error message says by the way, did you read it?). Either set the Connection property or use SqlConnection.CreateCommand to create the command in the first place.

Matti Virkkunen
+1  A: 

You need to assign that SqlConnection object to the SqlCommand - try this code:

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
    string connStr = "Data Source=M1-PC;Initial Catalog=master;Integrated Security=True;Pooling=False";

    using(SqlConnection conn = new SqlConnection(connStr))
    {
       string sqlStmt = String.Format("BACKUP DATABASE LA TO DISK='{0}'", saveFileDialog1.FileName);

       using(SqlCommand bu2 = new SqlCommand(sqlStmt, conn))
       {
           conn.Open();
           bu2.ExecuteNonQuery();
           conn.Close();

           MessageBox.Show("ok");
       }
    }

}

marc_s
When I use your code I get this error messege, http://i44.tinypic.com/5mbhxx.png - What is the proplem?
SzamDev
Well, does your SQL Server really have a directory `C:\Users\Saleh\Documents` ??? Remember: the backup will be done **on the SQL Server machine** - it will **NOT** be to your own local PC!
marc_s