我已经硬编码了数据库的数据目录。由于我想避免它,我决定使用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\\
答案 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 |中删除@ "