ConnectionString属性尚未初始化的错误

时间:2018-07-30 08:57:15

标签: c# app-config

好的,所以我似乎遇到了一个令人讨厌的错误,希望您可以帮助我。

我正在使用winforms,并且在应用程序设置表单上,我提供了更改连接字符串的功能。当连接字符串的不同部分更改并且用户离开文本框时,它将信息写入app.config。这一切都像一个魅力。

我有一个按钮来测试连接,因此在表单仍处于打开状态时随时更改连接字符串后按此按钮时,我会遇到错误:

The ConnectionString property has not been initialized

为了使事情更加复杂,当我关闭并重新打开应用程序时,现在可以使用相同的表单进行连接,并且所有操作都可以顺利进行。几乎就好像Config在进行更改之后就锁定了自己,使其无法被查询。

在更改app.config和尝试使用存储的连接字符串打开连接之间,我需要做些什么吗?

这是我更改app.config的代码:

        Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
     config.ConnectionStrings.ConnectionStrings["myconnstr"].ConnectionString = textboxCS.Text;
        config.Save(ConfigurationSaveMode.Modified);

这是我用于测试连接的代码:

        Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

        string constr = System.Configuration.ConfigurationManager.ConnectionStrings["myconnstr"].ConnectionString;
        using (SqlConnection connection = new SqlConnection(constr))
        {
            try
            {
                connection.Open();
                connection.Close();
                MessageBox.Show("Successful Connection");
            }
            catch (Exception ee)
            {
                ee.ToString();
                MessageBox.Show("Failed Connection");
            }
            finally
            {
                connection.Close();
            }

1 个答案:

答案 0 :(得分:0)

此:

string constr = System.Configuration.ConfigurationManager.ConnectionStrings["myconnstr"].ConnectionString; 

需要替换为:

string constr = config.ConnectionStrings.ConnectionStrings["myconnstr"].ConnectionString;

问题是它试图两次打开ConfigurationManager

感谢所有帮助人员