273

How can I read a connection string from a web.config file into a public class contained within a class library?

I've tried:

WebConfigurationManager

ConfigurationManager

But these classes are not recognized within my class library.

13 Answers 13

546

You need to add a reference to System.Configuration and then use:

System.Configuration.ConfigurationManager.
    ConnectionStrings["connectionStringName"].ConnectionString;
1
188

Add System.Configuration as a reference.

For some bizarre reason it's not included by default.

67

C#

// Add a using directive at the top of your code file    
using System.Configuration;

// Within the code body set your variable    
string cs = ConfigurationManager.ConnectionStrings["connectionStringName"].ConnectionString;

VB

' Add an Imports statement at the top of your code file    
Imports System.Configuration

' Within the code body set your variable    
Dim cs as String = ConfigurationManager.ConnectionStrings("connectionStringName").ConnectionString
1
  • 3
    "Add a reference at the top of your code file" => that's a using directive, not a reference!
    – Mishax
    Commented Aug 1, 2014 at 14:54
28

Add System.Configuration as a reference then:

 using System.Configuration;

 ...

 string conn = 
    ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString;
0
20

I guess you need to add a reference to the System.Configuration assembly if that have not already been added.

Also, you may need to insert the following line at the top of your code file:

using System.Configuration;
0
17
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.DataVisualization.Charting;
using System.Web.UI.WebControls;  

C#

string constring = ConfigurationManager.ConnectionStrings["ABCD"].ConnectionString;
                using (SqlConnection con = new SqlConnection(constring))

BELOW WEB.CONFIG FILE CODE

<connectionStrings>
    <add name="ABCD" connectionString="Data Source=DESKTOP-SU3NKUU\MSSQLSERVER2016;Initial Catalog=TESTKISWRMIP;Integrated Security=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>

In the above Code ABCD is the Connection Name

1
  • Addition: Besides the indexer that accepts the name of the connection string, it is also allowed to use integer indices - which is useful if you want to read all connection strings in a for loop (for (int i = 0; i < numOfConnections; i++) { var conn = ConfigurationManager.ConnectionStrings[i]; ... }) and make them selectable in a combobox. With var numOfConnections = ConfigurationManager.ConnectionStrings.Count; you can determine how many connection strings exist. In this example conn.Name contains the name of the connection.
    – Matt
    Commented Dec 5, 2019 at 15:39
15

In VB : This should work

ConfigurationManager.ConnectionStrings("SQLServer").ConnectionString

In C# it would be (as per comment of Ala)

ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
3
  • Those parentheses need to be brackets. Commented Dec 13, 2012 at 19:01
  • 1
    @CharlesBurns,Thanks, I wrote in VB by mistake, in C# sure it should be ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString Commented Dec 13, 2012 at 20:01
  • Ahh, I didn't even realize that was VB. I thought it was a typo. In a way, my mistake too. Commented Dec 13, 2012 at 21:05
11

You have to invoke this class on the top of your page or class :

using System.Configuration;

Then you can use this Method that returns the connection string to be ready to passed to the sqlconnection object to continue your work as follows:

    private string ReturnConnectionString()
    {
       // Put the name the Sqlconnection from WebConfig..
        return ConfigurationManager.ConnectionStrings["DBWebConfigString"].ConnectionString;
    }

Just to make a clear clarification this is the value in the web Config:

  <add name="DBWebConfigString" connectionString="....." />   </connectionStrings>
1
  • In Web project is better to use WebConfigurationManager in System.Web.Configuration.
    – BJladu4
    Commented Dec 15, 2015 at 9:02
9
using System.Configuration;


string conn = ConfigurationManager.ConnectionStrings["ConStringName"].ToString();
0
4
using System.Configuration;


string connString = ConfigurationManager.ConnectionStrings["ConStringName"].ToString();

Remember don't Use ConnectionStrings[index] because you might of Global machine Config and Portability

2

First add this:

using System.Configuration;
0
1

Everybody seems to be suggesting that adding

using System.Configuration;

which is true.

But might I suggest that you think about installing ReSharper's Visual Studio extension?

With it installed, instead of seeing an error that a class isn't defined, you'll see a prompt that tells you which assembly it is in, asking you if you want it to add the needed using statement.

0

Add Namespace System.Configuration as a reference then

using System.Configuration;

 string conn =  ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.