通过System.Configuration检索ConnectionString引发异常

时间:2015-04-23 22:59:28

标签: c# connection-string

在我的C#应用​​程序中,我正在尝试连接到DataConnection。 该应用程序只是一个简单的登录表单,但只要用户单击登录按钮,就会引发引用连接字符串的异常错误。有人可以帮忙吗?

public void userLoginSuccessfull()
{
    try
    {
        //////////////////////////////////
        // This line is throwing the error
        //////////////////////////////////
        string connString = System.Configuration.ConfigurationManager
            .ConnectionStrings["connectionString"].ConnectionString;

        if (txtUsername.Text != "" & txtPassword.Text != "")
        {
            string queryText = @"SELECT Count(*) FROM Users 
                     WHERE Username = @Username AND Password = @Password";

            using (SqlConnection cn = new SqlConnection(connString))
            using (SqlCommand cmd = new SqlCommand(queryText, cn))
            {
                cn.Open();
                cmd.Parameters.AddWithValue("@Username", txtUsername.Text);
                cmd.Parameters.AddWithValue("@Password", txtPassword.Text);
                int result = (int)cmd.ExecuteScalar();
                if (result > 0)
                {
                    loadUserForm();
                }
            }
        }
    }
    catch (Exception ee)
    {
            Console.WriteLine(ee.StackTrace);
    }
}

这是错误

  

'EnviroWaste Job Logger.vshost.exe'(CLR v4.0.30319:EnviroWaste Job Logger.vshost.exe):已加载'C:\ Users \ listm \ Documents \ Visual Studio   2013 \ Projects \ EnviroWaste Job Logger \ EnviroWaste Job   Logger \ bin \ Debug \ EnviroWaste Job Logger.exe'。符号已加载。

     

System.Configuration.dll中出现'System.Configuration.ConfigurationErrorsException'类型的第一次机会异常

     

配置系统无法初始化

     

System.Data.dll中出现'System.TypeInitializationException'类型的第一次机会异常

连接字符串如下所示:

connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\UsersDatabase.mdf;Integr‌​ated Security=True"

2 个答案:

答案 0 :(得分:2)

您收到的错误与内容不正确的配置文件有关。最有可能的是,您的app.config(如果是桌面版)或web.config(如果是网络应用)提交了以下错误:

  

它的第一个元素没有<configSections>元素。

检查该文件并确保它看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <!-- Section groups, and stuff like userSettings, etc  -->
    </configSections>

    <connectionStrings>
        <add name="connectionString" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\UsersDatabase.mdf;Integr‌​ated Security=True"/>
    </connectionStrings>

    <!-- Possibly other stuff  -->

</configuration>

答案 1 :(得分:0)

也遇到了同样的问题。 Alex提供的解释给出了问题的线索,但这还不够。

app.config显然希望元素以特定顺序出现。

因此,在app.config中,在&lt; configuration&gt;之后,第一部分必须是:

<configSections>
    <!-- Section groups, and stuff like userSettings, etc  -->
</configSections>

其次是

<connectionStrings>
    <add name="connectionString" connectionString="...whatever is here..."/>
</connectionStrings>

然后是剩下的。

在我的情况下,我有:

<system.data>
  <DbProviderFactories>
    <remove invariant="System.Data.SQLite.EF6" />
    <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
  </DbProviderFactories>

作为&lt; config&amp; gt。

之后的第一个元素

所有我需要的是移动&lt; system.data&gt;部分并将其放在&lt; connectionStrings&gt;之后,以便尊重VS所需的顺序。

所以除了需要&lt; configSections&gt;在&lt; connectionString&gt;之前这些也必须是&lt; config&amp; gt之后的两个第一部分。这就是为我解决的问题。