簡體   English   中英

從App.config中獲取連接字符串

[英]Winforms connection strings from App.config

我有一個Winforms應用程序,我在C#中開發,將作為SQL Server 2005數據庫的前端。 我將可執行文件推送到測試機器並運行它。 它在測試機器上運行得非常好,直到我做的最后一輪更改。 但是,現在在測試機器上,它在打開時立即拋出以下異常:

System.NullReferenceException: Object reference not set to an instance of an object.
       at PSRD_Specs_Database_Administrat.mainMenu.mainMenu_Load(Object sender, EventArgs e)
       at System.Windows.Forms.Form.OnLoad(EventArgs e)
       at System.Windows.Forms.Form.OnCreateControl()
       at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       at System.Windows.Forms.Control.CreateControl()
       at System.Windows.Forms.Control.WmShowWindow(Message& m)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
       at System.Windows.Forms.ContainerControl.WndProc(Message& m)
       at System.Windows.Forms.Form.WmShowWindow(Message& m)
       at System.Windows.Forms.Form.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

我在此版本中更改了與mainMenu_Load相關的唯一內容是調用數據庫的連接字符串的方式。 以前,我在每個需要調用它的表單上設置了一個帶有連接字符串的字符串,例如:

string conString = "Data Source = SHAREPOINT;Trusted_Connection = yes;" +
                   "database = CustomerDatabase;connection timeout = 15";

隨着我的應用程序的增長,我添加了表單,我決定將App.config添加到項目中。 我在其中定義了連接字符串:

<connectionStrings>
  <add name="conString"
   providerName="System.Data.SqlClient"
   connectionString="Data Source = SHAREPOINT;Trusted_Connection = yes;database = CustomerDatabase;connection timeout = 15" />
</connectionStrings>

然后我創建了一個返回conString的靜態字符串:

public static string GetConnectionString(string conName)
{
    string strReturn = string.Empty;
    if (!(string.IsNullOrEmpty(conName)))
    {
        strReturn = ConfigurationManager.ConnectionStrings[conName].ConnectionString;
    }
    else
    {
        strReturn = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
    }
    return strReturn;
}

我刪除了conString變量,現在調用連接字符串,如下所示:

PublicMethods.GetConnectionString("conString").ToString()

看來這給了我錯誤。 我更改了這些實例,直接從App.config調用連接字符串,而不使用GetConnectionString。 例如,在SQLConnection中:

using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["conString"].ConnectionString))

這也引發了例外。 但是,當我回到每個表單上使用conString變量時,我沒有任何問題。 我不明白為什么這三種方法在我的開發機器上工作正常,而直接使用App.config或通過我創建的靜態字符串拋出異常。

好的,愚蠢的問題。 您確定在測試計算機上將連接字符串添加到app.config嗎? 你確定拼寫正確嗎? 您確定將connectionStrings部分放在app.config中的正確位置嗎? 你確定你把app.config放在正確的位置嗎? 你確定你正確拼寫了“app.config”,而不是app.cfg或app.cofig(我之前發過那個胖子)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM