【问题标题】:Why my connection string is null为什么我的连接字符串为空
【发布时间】:2014-11-23 20:45:15
【问题描述】:

我正在从 sql 数据库访问存储过程,但它在连接字符串点抛出:

“未设置对象引用”

代码:

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


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

我在 c#.net 中使用 windows 窗体,我是新手。

【问题讨论】:

  • 具体是哪个对象在运行时是null
  • @JohnNash var connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
  • 这是否有值:ConfigurationManager.ConnectionStrings["ConnectionString"]?
  • 你把这个配置放在什么文件里?
  • 业务层应用配置文件

标签: c# sql winforms


【解决方案1】:

从您的一个 cmets 看来,您的连接字符串似乎是在类库的 app.config 文件中定义的。如果是这种情况,您需要将配置文件中的连接字符串条目复制到实际应用程序的配置文件中 - 在这种情况下,是调用业务层库的 Windows 窗体应用程序。

【讨论】:

  • 没错,但为什么呢?如果我已将连接字符串放入业务层(类库)的应用程序配置中,那么为什么还要在实际项目中粘贴相同的应用程序文件?如果在业务层中实际连接代码,为什么要配置 2 个应用程序?
  • 您不必将连接字符串放在 app.config 中(我怀疑 Visual Studio 为您这样做是为了“方便”),如果您在没有 app.config 的情况下分发该库,它不会眨眼。类库不能单独执行,也没有自己的 AppDomain - 它存在于调用应用程序的 AppDomain 的上下文中。在运行时,.Net 框架将配置请求从类库路由到调用它的应用程序。我正在寻找一个很好的信息来源来解释这一切,当我找到一些东西时我会回复。
  • 很好,但我是新手,不懂你使用的技术术语和俚语
  • 来自 John Saunders 的 This answer 用较少的技术术语解释了它。本质上,不同的应用程序可能使用具有不同配置的类库,因此由应用程序提供配置。
  • "您需要将配置文件中的连接字符串条目复制到实际应用程序的配置文件中" WORKS FOR ME!
【解决方案2】:

我找到了两种可能的解决方案:
A. 从​​ App.config 文件的连接字符串定义中删除 providerName="System.Data.SqlClient" 部分

B.添加“使用System.Data.SqlClient;”在您尝试获取和使用 connectionString 的客户端代码的 using 部分上的行,如下所示:

使用 System.Data.SqlClient;

//(...其他代码...)

字符串 conStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();

我的猜测是在连接字符串上使用 providerName 选项会在执行时强制调用指定的提供者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2020-12-18
    • 2012-08-07
    • 1970-01-01
    相关资源
    最近更新 更多