2014-09-29 89 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選項強制執行時指定提供程序的調用。

相關問題