【问题标题】:database not found after publish发布后找不到数据库
【发布时间】:2014-09-20 13:01:37
【问题描述】:

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

"数据库 'C:\Users\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();
}

【问题讨论】:

  • 您的dbackup 程序是否在数据库“fees_data”中?
  • 类似问题stackoverflow.com/questions/12588165/…。甚至具有相同的数据库名称...
  • 示例 fee_data 我的数据库名称是 gamedata.mdf
  • 显示您的连接字符串。您在开发和生产中使用的 SQL Server 版本是什么?
  • 为什么不发布异常的确切文本而不是一些示例?例外情况类似于Database 'c:\...\gamedata.mdf' does not ...

标签: c# sql sql-server database sqlcommand


【解决方案1】:

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

您似乎使用的是 SQL Server 的 LocalDB 版本。在那里,您正确地使用文件的全名作为backup database 命令的参数。

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

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

【讨论】:

    猜你喜欢
    • 2013-10-23
    • 2014-12-31
    • 2015-11-12
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多