2014-09-29 86 views
0

我是从SQL数据库访问商店proceudre但将在连接字符串点:为什么我的连接字符串是空

“对象未设置”

代码:

<?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窗体,我是新手。

+0

具体哪些对象在运行时为null? – David 2014-09-29 12:46:22

+0

ConnectionString – 2014-09-29 12:47:16

+2

@JohnNash'var connectionString = ConfigurationManager.ConnectionStrings [“ConnectionString”]。ConnectionString;' – 2014-09-29 12:47:41

回答

0

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

+0

,但为什么?如果我已将连接字符串放在业务层(类库)的应用程序配置中,那么为什么要在实际项目中粘贴相同的应用程序文件?为什么2应用程序配置,如果实际连接代码在业务层? – 2014-09-29 19:28:21

+0

您不必将连接字符串放在app.config中(我怀疑Visual Studio会将它作为“便利”来使用它),并且如果您在不使用app.config的情况下分发该库,则不会眨眼睛。类库本身不可执行,并且没有自己的AppDomain - 它存在于调用应用程序的AppDomain的上下文中。在运行时,.Net框架将从类库中进行配置的请求路由到正在调用它的应用程序。我正在寻找一个很好的信息来源来解释所有这些,当我找到某些东西时我会回复。 – 2014-09-29 19:45:38

+0

相当不错,但我是新手,无法理解你使用的技术术语和俚语 – 2014-09-29 19:53:57

0

我发现了两个可能的解决方案:
A.从上App.config中的连接字符串定义中删除的providerName =“System.Data.SqlClient的”零件文件

B.添加“使用系统。 Data.SqlClient;”在客户端代码的使用部分中,您尝试获取并使用connectionString,如下所示:

using System.Data.SqlClient; 。

//(...other代码...)

串构造= ConfigurationManager.ConnectionStrings [ “的ConnectionString”] ConnectionString.ToString();

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

相关问题