2013-06-26 40 views
2

我在C#中有一個類庫,有幾個類和一個app.config。我已經把在ConnectionString中的app.config如下:在app.config中添加connectionstring

<connectionStrings> 
    <add name="TRN_DB" 
     connectionString="Database=TRN;Server=NDTSSN;User ID=ln_users2;Password=%4nu$r!;Connection Timeout=30;pooling=false;" 
     providerName="System.Data.SqlClient" 
    /> 
</connectionStrings> 

我嘗試在類別中的一個我的項目打開的連接字符串如下:

 string connectionString = ConfigurationManager.ConnectionStrings["TRN_DB"].ConnectionString.ToString(); 
     SqlConnection con = new SqlConnection(connectionString); 
     con.Open(); 

但它給了我一個錯誤:

{"Object reference not set to an instance of an object."}

連接字符串是正確的,當我在Web項目中使用同樣的方法在web.config中,是否有人知道如何如何,我可以在app.config中訪問它?我已經使用這種方式太:

string connectionString = System.Configuration.ConfigurationSettings.AppSettings["TRN_DB"]; 

這個人給我這個錯誤:

This method is obsolete, it has been replaced by System.Configuration!System.Configuration.ConfigurationManager.Appsettings

要清楚,我沒有任何其他的項目在我的解決方案,因爲我希望我的類庫獨立工作。我無法應用web項目和web.config。所以我應該添加連接字符串到app.config並訪問它或者添加一個web.config到我的類庫項目。我不確定哪一個是可行的。

+0

你在哪一行得到NullReferenceException? –

+0

等一下,如果這只是一個類庫,你是如何運行程序來獲得該錯誤?如果您從另一個應用程序引用了庫,則需要將連接字符串放入該應用程序的配置文件中。 –

+0

我正在測試它與簡單的窗體窗體,但我應該只交給另一個程序員的類庫,所以我必須把連接字符串? – Alma

回答

4

如果您正在運行網絡項目,類庫, 連接字符串添加到web.config網絡項目

裏面如果你正在運行控制檯/ WinForm的項目,類庫, 添加連接字符串到app.config裏面的控制檯/ WinForm項目

在庫項目中修改配置不會k在你的情況。

2

從我所瞭解的情況來看,你有一個帶有連接字符串的配置文件的類庫,並在另一個應用中引用該庫。問題是一個app.config(或web.config)與正在執行的應用程序有關。

假設您的類庫名爲Shared.dll,並且具有Shared.dll.config和另一個稱爲Application的Application.exe.config的應用程序(假設它是一個控制檯應用程序)。運行該應用程序時,所使用的app.config將爲Application.exe.config。

如果您嘗試訪問此應用程序中名爲TRN_DB的連接字符串,它將在應用程序的配置文件中查找未定義的位置並返回null(因此引用異常)。

+0

噢好吧然後我猜這是不可能的,我應該創建一個web項目,並把連接字符串放在web.cofig中。 – Alma

0

連接字符串的東西需要在主要的exe項目的app.config中,否則你需要手動加載它。

0

正如其他人所說,該庫將使用配置文件執行應用程序。

我想添加一個建議。一種選擇考慮,因爲(在我看來)有一點拋光和專業的觸摸是創建一個自定義配置部分。這將允許您將庫的設置進行分組,並且不會對您的庫使用哪些設置造成任何困惑:http://msdn.microsoft.com/en-us/library/2tw134k3(v=vs.100).aspx

1

在Windows窗體應用程序中始終添加對System.Configuration的引用,然後在代碼頁中添加using System.Configuration然後用連接字符串是這樣的:

string conStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString; 
1

我有一個類似的問題,這個問題竟然是,我需要System.Configuration添加引用。

我以爲使用System.Configuration添加;到類將做的伎倆,但我必須添加System.Configuration的參考之前,它會工作。

相關問題