【问题标题】:Object reference not set to an instance of an object. - ConfigurationManager.ConnectionString [duplicate]你调用的对象是空的。 - ConfigurationManager.ConnectionString [重复]
【发布时间】:2019-06-03 15:42:40
【问题描述】:

我正在尝试连接到我的本地数据库以选择一个 sql 数据库并打印列名,但我不断收到此异常:

System.NullReferenceException: '对象引用未设置为 对象的实例。'

System.Configuration.ConnectionStringSettingsCollection.this[string].get 返回空值。

有人可以帮帮我吗?

    string constr = 
  ConfigurationManager.ConnectionStrings[@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\NORTHWND.MDF;Integrated Security=True;"].ConnectionString;

    SqlConnection con = new SqlConnection(constr);

【问题讨论】:

  • 您已经拥有constr 形式的连接字符串。配置管理器的连接字符串用于按名称从配置文件中检索 ConnectionString 设置。您当前正在使用整个连接字符串作为查找名称。
  • 变量constr 是您的连接字符串。您将它用作ConfigurationManager 维护的连接字符串字典的索引:ConfigurationManager.ConnectionStrings[constr]。要么单独使用连接字符串,要么使用配置文件中的字符串名称
  • 好的,我试着修复了一下,结果还是一样

标签: c# sql asp.net visual-studio


【解决方案1】:

如果您需要使用ConfigurationManager.ConnectionStrings,那么您的连接字符串需要位于web.config 中的configuration/connectionStrings 部分,类似于:

<configuration>
   <connectionStrings>
            <add name="db" connectionString="Data 
          Source=.\SQLEXPRESS;AttachDbFilename=C:\Program Files\Microsoft SQL 
          Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\NORTHWND.MDF;Integrated Security=True;"/>
   </connectionStrings>
<configuration/>

然后您可以通过name 属性的值访问它,如下所示:

var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["db"].ConnectionString);

【讨论】:

  • 是的,我认为这成功了。谢谢!
【解决方案2】:

您正在初始化 SqlConnection 有点傻。 试试这个:

SqlConnection con = new SqlConnection(constr);

【讨论】:

  • 我必须使用 ConfigurationManager.ConnectionString 因为稍后在代码中需要它。所以你可以更好地理解我正在尝试从 GetData() 方法复制代码:aspsnippets.com/Articles/…
  • 如果不查看其余代码,很难看出问题所在,但请尝试使用:ConfigurationManager.ConnectionStrings["constr"] 而不是 ConfigurationManager.ConnectionStrings[constr]
  • 好的,我稍微编辑了一下代码,结果还是一样
猜你喜欢
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 2013-05-27
  • 2013-07-22
相关资源
最近更新 更多