发布后找不到数据库

时间:2014-09-20 03:45:14

标签: c# sql sql-server database sqlcommand

我使用sql数据库制作一个项目,它在Visual Studio 2012中没有任何错误,但在发布并安装之后,当我进行备份时显示以下错误

  

"数据库&C; \用户\ LU \ AppData \ Local \ Apps \ 2.0 \ D9HBHD8T.Y1H \ 5B2JMG1T.N8W \ game..tion_60f48512c0fd7b6a_0001.0000_7a5b2d8ced8c74c0 \ gamedata.mdf'不存在。确保名称是   输入正确。 BACKUP DATABASE异常终止。"

这是我的程序

CREATE proc dbackup
@databaseName sysname,
@path nvarchar(400)
as
backup database @databaseName to disk = @path with init
return

这是我的备用代码:

private void button1_Click(object sender, EventArgs e)
{
  DataBase db=new DataBase();
  try
  {
    db.connect();
    SqlCommand oCommand = new SqlCommand(@"dbackup",db.sqlcon);
    oCommand.CommandType = CommandType.StoredProcedure;
    oCommand.Parameters.AddWithValue("@databaseName", Application.StartupPath + "\\gamedata.mdf");
    oCommand.Parameters.AddWithValue("@path", textBox1.Text);
    oCommand.ExecuteNonQuery();
    MessageBox.Show("Backup Created Sucessfully");
  }
  catch (Exception ex)
  {
    MessageBox.Show("Error Occurd :" + ex.Message);
  }
  finally
  {
    db.disconnect();
  }
  this.Close();
}

1 个答案:

答案 0 :(得分:1)

如果您使用ClickOnce部署应用程序,请不要使用Application.StartupPath来存储数据库。

您似乎正在使用SQL Server的LocalDB版本。您可以正确使用文件的全名作为backup database命令的参数。

但是ClickOnce安装文件夹的名称是混淆的,所以它在SQL语句中不起作用。

在安装后首次启动应用程序时,必须将.mdf文件从安装文件夹复制到其他本地文件夹,并将该文件夹用于数据。