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>

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

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


当前回答

由于这是一个非常常见的问题,我准备了一些Visual Studio的屏幕截图,让它更容易遵循4个简单的步骤。

其他回答

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

放置ConfigurationManager时遇到此问题。在UserControl的构造函数中的ConnectionStrings,这里没有一个解决方案对我有效。

经过一些研究,看起来像ConfigurationManager。ConnectionStrings将为空,而试图从设计时间访问它。

从这篇文章中,我想出了下面的代码来检测DesignTime,作为解决问题的方法:

public class MyUserControl : UserControl 
{
    ....
    public MyUserControl ()
    {
        InitializeComponent();

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

还要检查是否包含了系统。在您的引用下配置dll。没有它,您将无法访问系统中的ConfigurationManager类。配置名称空间。

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

在这种情况下,代码实际上是试图访问可执行文件的App.Config,而不是dll。因为没有找到名称,所以返回Null,因此出现了异常。

下面的帖子可能会有所帮助: DLL的app.config中的ConnectionString为空

似乎问题不在于引用,你得到的connectionstring为空,所以请确保你已经将该值添加到配置文件中,你正在运行的项目意味着首先启动/执行的主程序/库。