在桌面应用程序中存储类库的连接字符串的位置?我可以在app.config中使用吗?

时间:2010-11-27 09:22:55

标签: c# .net winforms

我是桌面应用程序开发的新手,目前正在使用分层架构(用户界面,DAL,BLL)构建桌面应用程序。

在Web开发中,我曾经将连接字符串存储在web.config中,而我的类库正在从那里访问它。请指导我如何&应在桌面应用程序中为DAL存储连接字符串。我尝试在我的类库中添加app.config文件并访问连接字符串,如下所示:

ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString)

但它会引发错误:“对象引用未设置为对象的实例。”

请指导我。感谢您的支持和分享。

5 个答案:

答案 0 :(得分:4)

它应该存储在Windows应用程序的app.config中,而不是存储在类库中。基本上,当您运行可执行文件时,应该在包含设置的同一文件夹中有一个名为Foo.exe.config的文件(其中Foo.exe是Windows应用程序的结果可执行文件)。

因此,在Visual Studio中,只需将app.config文件添加到WinForms应用程序项目并将设置存储在那里。在这种情况下,您的自定义库将成功读取它们。没有必要将app.config文件添加到您的类库项目中,因为它永远不会被使用。

答案 1 :(得分:3)

是的,在桌面应用程序中,所有配置都应该在该应用程序的app.config中。此桌面应用程序使用的类库默认情况下将从app.config获取其配置。

如果此行抛出异常:

ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString

然后它很可能是因为没有名称“connectionstring”的<connectionStrings>条目存在。检查NULL:

if(ConfigurationManager.ConnectionStrings["connectionstring"] != null)
{
    string connStr = ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString;
 }

答案 2 :(得分:2)

它将存储在app.config文件中,您可以像在Web应用程序中一样访问连接字符串:

if(ConfigurationManager.ConnectionStrings["connectionstringName"] != null)
{  
      string connectionString = ConfigurationManager.ConnectionStrings["connectionstringName"].ConnectionString;
}

答案 3 :(得分:0)

应用程序的任何配置设置是应将应用程序设置还是连接字符串放在应用程序的app.config文件中。对于桌面应用程序,您可以添加“应用程序配置”文件或“app.config”并将连接字符串放在那里。该应用程序的任何依赖...例如像DAL这样的类库将从应用程序的* .config文件中提取其连接字符串所需的值。

答案 4 :(得分:0)

您可以使用app.config或其他方式使用简单的文本文件提及连接字符串。

//// Read connection string from the text file
StreamReader sr = new StreamReader(System.Windows.Forms.Application.StartupPath @"C:\ConnectionString.txt");
connStr = sr.ReadLine();