C# 从App.config获取连接字符串

C# 从App.config获取连接字符串,c#,ado.net,exception-handling,connection-string,app-config,C#,Ado.net,Exception Handling,Connection String,App Config,这是我的App.config: 但当我的项目运行时,这是我的错误: 对象引用未设置为对象的实例 您是否尝试过: var connection = ConnectionFactory.GetConnection( ConfigurationManager.ConnectionStrings["Test"] .ConnectionString, DataBaseProvider); 你不能只做以下几件事: var connection = new ConnectionFacto

这是我的App.config:


但当我的项目运行时,这是我的错误:

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

您是否尝试过:

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

你不能只做以下几件事:

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

您的程序集还需要对
System.Configuration.dll

的引用。请检查您的引用下是否包含
System.Configuration
dll。没有它,您将无法访问System.Configuration命名空间中的
ConfigurationManager
类。

1)创建新表单并添加以下内容:

var connection = 
    System.Configuration.ConfigurationManager.
    ConnectionStrings["Test"].ConnectionString;
然后,当您要使用连接时,请在您的表单中执行以下操作:

Imports System.Configuration
Imports Operaciones.My.MySettings

Public NotInheritable Class frmconexion

    Private Shared _cnx As String
    Public Shared Property ConexionMySQL() As String
        Get
            Return My.MySettings.Default.conexionbd
        End Get
        Private Set(ByVal value As String)
            _cnx = value
        End Set
    End Property

End Class
就这样。你将连接到数据库,可以做一些事情


这是针对vb.net的,但逻辑是相同的

由于这是一个非常常见的问题,我准备了一些VisualStudio中的屏幕截图,以便在4个简单步骤中轻松完成

 Private Sub frmInsert_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim cn As New MySqlConnection(frmconexion.ConexionMySQL)
cn.open()
string sTemp = System.Configuration.ConfigurationManager.ConnectionStrings["myDB In app.config"].ConnectionString;

您可以使用下面的代码行获取连接字符串-

string str = Properties.Settings.Default.myConnectionString; 
以下是参考资料:

问题似乎不在于引用,您得到的连接字符串为null,因此请确保您已将该值添加到正在运行的项目的配置文件中,这意味着首先启动/执行的主程序/库。

首先将
System.Configuration
的引用添加到页面中

using System; using System.Configuration;

var connectionString=ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
然后根据你的app.config获取连接字符串,如下所示

using System.Configuration;
就这样,现在您手中有了连接字符串,可以使用它了。

试试这个

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

我引用了
System.Configuration
库,我也有相同的错误。 调试文件没有其app.config,请手动创建此文件。
错误是,我通过复制调试文件夹中的文件“appname.exe.config”解决了这个问题。IDE未创建该文件。

此问题中的OP可能试图在dll中使用App.Config

在本例中,代码实际上是试图访问可执行文件的App.Config,而不是dll。由于找不到名称,因此返回Null,因此显示异常

以下帖子可能会有所帮助: 这对我很有效:

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

数据源=。;初始目录=OmidPayamak;IntegratedSecurity=True“


首先,您必须向项目添加
System.Configuration
引用,然后使用下面的代码获取连接字符串

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

我也有同样的问题。我的解决方案是由两个项目组成的。一个是
类库
和一个引用类库项目的网站。问题是我试图访问
类库
项目中的
App.config
,但系统正在网站的
Web.config
中搜索。我将
Web.config中的连接字符串和…问题已解决


主要原因是,尽管在另一个程序集中使用了
ConfigurationManager
,但它正在runnig项目中搜索。

我通过使用索引读取字符串并逐个检查来解决问题。使用名称读取仍然会出现相同的错误。

我在开发C#窗口应用程序时遇到问题,我的asp.net应用程序中没有这个问题。设置中一定有不正确的地方。

您可以使用此方法获取连接字符串

_connectionString = ConfigurationManager.ConnectionStrings["MYSQLConnection"].ConnectionString.ToString();

为了从app.cfg(在windows服务应用程序中)读取连接字符串,下面的代码适用于我

using System; 
using System.Configuration;

private string GetConnectionString()
{
    return ConfigurationManager.ConnectionStrings["MyContext"].ConnectionString;
}

上面的答案没有详细说明连接字符串索引中的值来自哪里

如上所述,要获取连接字符串,您可以说:

 var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
    connectionStringsSection.ConnectionStrings["CONNECTIONSTR"].ConnectionString = @"New Connection String";
要使用正确的值
XXX
,请转到主项目
web.config
文件并查找以下代码:

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


当它显示
name=
时,这些引号中的文本是您在上述代码中使用的
XXX
的值。在我上面的示例中,它恰好是
身份验证

在将
配置管理器放置到用户控件中时遇到此问题,并且这里没有一个解决方案对我有效

经过一些研究,似乎是
ConfigurationManager。当尝试从
DesignTime
访问ConnectionString时,ConnectionString将为null

从年开始,我提出了以下代码来检测
DesignTime
,作为解决问题的方法:

<connectionStrings>
    <add name="Authentication" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=Authentication;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Authentication.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>

您将正在运行的应用程序的App.config?项目或某个dll放在哪里了?您需要首先添加对System.Configuration.dll的引用,并且您应该能够使用System.Configuration.ConfigurationManager。您的连接字符串有一个拼写错误。您需要在“集成”和“安全性”之间留一个空格“@OnurOmer-问题已更新为包含空格(“集成安全性”而不是“集成安全性”)爱这个答案。默认情况下,在我的VS(VS2012 Ultimate)版本中不包括此库,但使用System.Configuration
仍然有效我确实必须添加引用,或者使用未加下划线,但ConfigurationManager未知。谢谢如果app.config被添加为一个项目的链接怎么办?这只在你的连接字符串是app设置的情况下起作用,如果从app.config中检索
元素(这是OP要求的!)则不起作用。我做了与你所说的相同的操作,但我得到了相同的空引用错误。我知道这是一个C问题,但是,由于这是谷歌搜索结果的顶部,要在VB中实现这一点,对于我们这些必须维护VB代码的人来说,这是
System.Configuration.ConfigurationManager.ConnectionString(“Test”).ConnectionString
<connectionStrings>
    <add name="Authentication" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=Authentication;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Authentication.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>
public class MyUserControl : UserControl 
{
    ....
    public MyUserControl ()
    {
        InitializeComponent();

        bool designMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
        if (!designMode)
        {
            this.connectionString = 
                ConfigurationManager.ConnectionStrings["xxx"].ConnectionString;
        }
    }
}