从App.config获取连接字符串

443
var connection = ConnectionFactory.GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);

这是我的App.config文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
        <add name="Test" connectionString="Data Source=.;Initial Catalog=OmidPayamak;Integrated Security=True" providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

但是当我的项目运行时,出现了以下错误:

对象引用未设置为对象的实例。


5
你把那个 App.config 文件放在哪里了?是应用程序项目里还是某个 DLL 里?你需要先找到它。 - abatishchev
3
添加对 System.Configuration.dll 的引用,然后您就可以使用 System.Configuration.ConfigurationManager。 - daszarrin
您的连接字符串有一个错别字。在“Integrated”和“Security”之间需要加一个空格。 - Onur Omer
@OnurOmer - 问题已更新,包括空格("Integrated Security" 而不是 "IntegratedSecurity") - SlimsGhost
22个回答

553

你可以直接执行以下操作:

var connection = 
    System.Configuration.ConfigurationManager.
    ConnectionStrings["Test"].ConnectionString;

你的汇编代码还需要引用 System.Configuration.dll 程序集。


21
我知道这是一个关于 C# 的问题,但由于这篇文章是谷歌搜索结果的首选,如果你需要在 VB 中执行此操作,你可以使用以下代码:System.Configuration.ConfigurationManager.ConnectionStrings("Test").ConnectionString。这对于需要维护 VB 代码的人来说很有用。 - Jacqlyn

318

由于这是一个非常普遍的问题,我准备了一些来自Visual Studio的屏幕截图,以4个简单的步骤使其易于跟进。

从app.config获取连接字符串


26
喜欢这个答案。在我的VS版本中(VS2012 Ultimate),默认情况下并未包含此库,但 using System.Configuration 仍然有效。 - David Colwell
4
如果不添加引用,尽管没有下划线,但仍然无法识别ConfigurationManager,所以我必须添加引用。谢谢! - CodingYourLife

36
string str = Properties.Settings.Default.myConnectionString; 

2
如果将app.config作为链接添加到项目中会怎样? - FrenkyB
4
只有当你的连接字符串是应用程序设置时,这才有效,如果要从app.config检索<connectionStrings>元素(这是OP所要求的!),那么它将不起作用! - BrainSlugs83

33

请确保您在参考中包含了 System.Configuration 的dll。 如果没有它,您将无法访问 System.Configuration 命名空间中的 ConfigurationManager 类。


31

首先在您的页面中添加System.Configuration的引用。

using System.Configuration;

根据您的app.config,获取连接字符串如下。

string conStr = ConfigurationManager.ConnectionStrings["Test"].ToString();

现在您已经拥有连接字符串,可以使用它了。


17
//Get Connection from web.config file
public static OdbcConnection getConnection()
{
    OdbcConnection con = new OdbcConnection();
    con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["con"].ConnectionString;
    return con;     
}

7

尝试一下这个

string abc = ConfigurationManager.ConnectionStrings["CharityManagement"].ConnectionString;

4
这对我有效:
string connection = System.Configuration.ConfigurationManager.ConnectionStrings["Test"].ConnectionString;

输出:

数据源=.;初始目录=OmidPayamak;集成安全=True"


3
你尝试过以下方法吗:
var connection = new ConnectionFactory().GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);

3

上面的答案没有详细说明 connectionStrings 索引中的值来自哪里。

如上所述,获取连接字符串的方法是:

string conStr = ConfigurationManager.ConnectionStrings["XXX"].ToString();

要使用正确的XXX值,请转到您的主项目web.config文件并查找以下代码片段:
<connectionStrings>
    <add name="Authentication" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=Authentication;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Authentication.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>

name=处,引号内的文本是你在上面的代码中使用的XXX的值。在我的示例中,它恰好是Authentication


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接