gpt4 book ai didi

c# - App.config 中的 Winforms 连接字符串

转载 作者:行者123 更新时间:2023-11-30 15:48:15 24 4
gpt4 key购买 nike

我有一个用 C# 开发的 Winforms 应用程序,它将用作 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(我之前已经指过那个)

关于c# - App.config 中的 Winforms 连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2814097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com