MDHenry
MDHenry

Reputation: 1

c#:Configuration system failed to initialize

I'm making a c# program that takes input from a windows form app into a localDB. I looked through tutorials on app.config and the actual calls, and also looked at other questions here and haven't found anything that fixed it. Specifically if i dont use a try/catch it completely breaks at the line "SqlCommand cmd = conn.CreateCommand();person newPerson = new person(FirstNameBox.Text, phoneBox.Text, emailBox.Text, LastNameBox.Text);" It does say "the configuration element is not declared" but I haven't seen anything that shows its wrong?

try
        {
            System.Data.SqlClient.SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["database"].ConnectionString);
        SqlCommand cmd = conn.CreateCommand();person newPerson = new person(FirstNameBox.Text, phoneBox.Text, emailBox.Text, LastNameBox.Text);
        cmd.CommandText = @"Insert into Person (FirstName,LastName,Email,Phone)
                            VALUES(@FirstName, @LastName, @Email, @Phone)

";
        cmd.Parameters.AddWithValue("@FirstName", newPerson.getFirstName());
        cmd.Parameters.AddWithValue("@LastName", newPerson.getLastName());
        cmd.Parameters.AddWithValue("@Email", newPerson.getEmail());
        cmd.Parameters.AddWithValue("@Phone", newPerson.getPhone());
            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();
            if (!ValidateForm())
            {
                return;
            }
        }
     catch (Exception ex)
        {
           MessageBox.Show(ex.Message,
          Application.ProductName,
          MessageBoxButtons.OK,
           MessageBoxIcon.Exclamation);
       }

app.config

<?xml version="1.0" encoding="utf-8" ?>
 <configuration>
 <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<configSections>
<sectionGroup name="applicationSettings"
              type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
  <section name="Midterm.Properties.Settings"
           type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
           requirePermission="false" />
    </sectionGroup>
    </configSections>
    <connectionStrings>
    <add name="database" 
         connectionString=" Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Matthew\Documents\Visual Studio 2012\Projects\Midterm\Midterm\Database1.mdf;Integrated Security=True;pooling=false"
       providerName="System.Data.SqlClient"  ></add>
     </connectionStrings>

<connectionStrings>
        <add name="Midterm.Properties.Settings.Database1ConnectionString"
        connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True"
        providerName="System.Data.SqlClient" />
     </connectionStrings>

 </configuration>

Upvotes: 0

Views: 367

Answers (2)

Steve
Steve

Reputation: 216353

You have two sections for configurationStrings. You need to have only one

<connectionStrings>
    <add name="database" connectionString="......."/>
    <add name="Midterm.Properties.Settings.Database1ConnectionString" connectionString="..... " />
</connectionStrings>

Upvotes: 1

Eric J.
Eric J.

Reputation: 150208

You have two different <connectionStrings> nodes in your configuration file

<connectionStrings>
    <add name="database" 
     connectionString=" Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Matthew\Documents\Visual Studio 2012\Projects\Midterm\Midterm\Database1.mdf;Integrated Security=True;pooling=false"
   providerName="System.Data.SqlClient"  ></add>
 </connectionStrings>

 <connectionStrings>
    <add name="Midterm.Properties.Settings.Database1ConnectionString"
    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True"
    providerName="System.Data.SqlClient" />
 </connectionStrings>

Combine them into a single <connectionStrings> entry.

<connectionStrings>
    <add name="database" 
     connectionString=" Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Matthew\Documents\Visual Studio 2012\Projects\Midterm\Midterm\Database1.mdf;Integrated Security=True;pooling=false"
   providerName="System.Data.SqlClient"  />
    <add name="Midterm.Properties.Settings.Database1ConnectionString"
    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True"
    providerName="System.Data.SqlClient" />
 </connectionStrings>

Upvotes: 0

Related Questions