2015-04-23 60 views
-1

在我的C#應用​​程序中,我試圖連接到DataConnection。 該應用程序只是一個簡單的登錄表單,但只要用戶單擊登錄按鈕,它就會引發一個引用連接字符串的異常錯誤。誰能幫忙?通過System.Configuration檢索ConnectionString拋出異常

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): Loaded 'C:\Users\listm\Documents\Visual Studio 2013\Projects\EnviroWaste Job Logger\EnviroWaste Job Logger\bin\Debug\EnviroWaste Job Logger.exe'. Symbols loaded.

A first chance exception of type 'System.Configuration.ConfigurationErrorsException' occurred in System.Configuration.dll

Configuration system failed to initialize

A first chance exception of type 'System.TypeInitializationException' occurred in System.Data.dll

連接字符串看起來是這樣的:

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

您只有部分錯誤,如果我們知道錯誤的行和拋出的異常,這將有所幫助。 –

+0

當你收到一個異常時,你應該做的*第一件*事情是*閱讀錯誤信息*。 – David

+0

如果你的錯誤涉及到一個異常字符串,*將它包含在沒有密碼**的問題**中。 – mason

回答

2

你得到了錯誤涉及到具有不正確的內容配置文件。最有可能的,你的app.config(如桌面)或web.config(如Web應用程序)文件中的以下錯誤:

It does not have as its first element the <configSections> element.

檢查文件,並確保它看起來是這樣的

<?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> 
0

也跑進同樣的問題。 Alex提供的解釋爲這個問題提供了線索,但這還不夠。

app.config顯然希望元素以特定順序出現。

因此,在的app.config,後右<配置>,第一部分必須是:

<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> 

作爲真正的第一元素之後<配置& GT。

所有我需要的是移動<system.data>部分,並將其放在<的ConnectionStrings >後,爲了尊重VS需要的順序。

所以除了需要有<configSections>前<的connectionString >這些也必須在這兩個第一部分之後<配置& GT。這是爲我修復的。