C# 如何备份、复制、恢复或加载.Mdf附加的数据库文件

C# 如何备份、复制、恢复或加载.Mdf附加的数据库文件,c#,sql-server,C#,Sql Server,我使用SQLServerExpressLocalDB,我有一个.mdf数据库文件自由浮动连接数据库 我有一个带有按钮的表单,当按下按钮时,会打开一个SaveFileDialog 我想将.mdf文件保存到用户选择的任何数据库中,然后我有另一个带有按钮的表单进行恢复,或者在这个.mdf数据库中复制并覆盖现有文件 private void button1_Click(object sender, EventArgs e) { ((( connectionString="Data Source=(

我使用SQLServerExpressLocalDB,我有一个.mdf数据库文件自由浮动连接数据库

我有一个带有按钮的表单,当按下按钮时,会打开一个SaveFileDialog

我想将.mdf文件保存到用户选择的任何数据库中,然后我有另一个带有按钮的表单进行恢复,或者在这个.mdf数据库中复制并覆盖现有文件

private void button1_Click(object sender, EventArgs e)
{
   ((( connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Expert-Pro-SoftDataBase.mdf;Integrated Security=True"))) this is the connection string

    saveFileDialog1.ShowDialog();            

    SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Expert"].ToString());

    if (con.State.ToString() == "Closed")
    {
       con.Open();
    }

    SqlCommand com = new SqlCommand("Backup Database @E TO DISK = @disk", con);
    com.Parameters.Add(new SqlParameter("@E", "DatabaseTest.mdf"));(Another question is how can I find out the path of the Mdf. file when installs on another machine?)
    com.Parameters.Add(new SqlParameter("@disk", saveFileDialog1.FileName));
    com.ExecuteNonQuery();

    MessageBox.Show("Datele au fost salvate", "Expert Pro-Soft Facturare", MessageBoxButtons.OK, MessageBoxIcon.Information);
    con.Close();            
}   
我听说这个.mdf连接的自由浮动无法备份或恢复,只能复制。然后我要还原它并用已保存的文件覆盖当前的.mdf。谢谢大家


因为它在磁盘上,我想复制它,但你怎么做,然后用当前的替换复制的。要复制,我有一个按钮,要重新加载或还原复制的.mdf文件,我有另一个按钮

对不起,我不完全清楚您想要什么。因为mdf已经在磁盘上了,我不知道用SQL命令备份它与只将它复制到另一个位置相比有什么好处。是的,Brian Washaw,我不知道这里的最佳选择是什么,我想复制,但如何做,然后用另一个按钮,我想用复制的按钮替换当前的。我只是认为用Sql命令备份是一个更好的选择,但是复制它然后替换它似乎是不错的选择,但是你怎么做呢。您可以使用System.IO和File类复制它。通过在执行过程中修改app.config文件,使用System.Configuration API修改和保存配置文件,可以更新应用程序指向的内容。当你将DB文件添加到你的应用程序时,它会将连接字符串信息添加到你的app.config-你只需要修改它。Brian Warshaw,在下面发一篇帖子,这样我就可以标记为答案。谢谢你的关注。我做了文件.Copy我保存了.mdf,但是当我尝试使用该.mdf并粘贴覆盖当前使用时,进程无法访问该文件,正在使用中,请在下面显示有关System.COnfiguration的信息,以便在运行时修改,更新字符串信息,再次感谢您确实帮助了meBrian Warshaw,请帮助我,因为我问你这个问题的时间是10到10分钟。我的眼睛一直盯着这个网站,希望并祈祷你能回答这个问题。我试着做这个,但从那时起我就找不到办法。当我试图复制拒绝访问的数据库时,它正在使用中。File.Copy..我可以做什么来复制它,以便以后替换或备份此连接的数据库。