浏览SQL Server数据库的数据目录不起作用

时间:2014-08-09 21:55:07

标签: c# sql sql-server

我已经硬编码了数据库的数据目录。由于我想避免它,我决定使用FolderBrowserDialog并将对话框字符串存储到应用程序设置中。

这是硬编码的代码段,可以打开SQL连接:

AppDomain.CurrentDomain.SetData("DataDirectory", @"C:\Users\Osman\Documents\Visual Studio 2013\Projects\CompanyWPF\CompanyWPF\");

try
{
    using (SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Produkt.mdf;Integrated Security=True"))
    {
        con.Open();
    }
}
catch (Exception ex)
{
    MessageBox.Show("Error\n" + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
}

但是当我使用应用程序设置中存储的字符串时:

AppDomain.CurrentDomain.SetData("DataDirectory",@"" + Properties.Settings.Default.ConnectionString);

try
{
    using (SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=@|DataDirectory|\Produkt.mdf;Integrated Security=True") )
    {
        con.Open();
    }
}
catch (Exception ex)
{
    MessageBox.Show("Error\n" + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
}

然后发生以下错误:

  

key' attachdbfilename'的值无效。

我设置了一个断点,应用程序设置中存储的字符串的值为:

C:\\Users\\Osman\\Documents\\Visual Studio 2013\\Projects\\CompanyWPF\\CompanyWPF\\

1 个答案:

答案 0 :(得分:0)

我不确定你要做什么,但我认为这是问题

            using (SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=@|DataDirectory|\Produkt.mdf;Integrated Security=True") )

使用此替代

using (SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Produkt.mdf;Integrated Security=True") )

注意:从此" @ | DataDirectory |中删除@ "