c# - 在类库中哪里声明 ConfigurationManger?
问题描述
我在 vs2017 中用 C# 语言开发一个 Windows 窗体应用程序。我有一个本地 SQL 数据库,我从不同的 winform 访问了很多。我想创建一个静态类库,其中包含用于读取或向数据库添加数据的静态方法,只是为了使我的程序简洁易读。
通常,我ConfigurationManger
在 winform中声明我的initializeComponent()
,但是在我的类库中,如果我在我的类中声明它,我会收到错误,我只能在我的方法中声明它,但这意味着我必须在我的所有方法中声明它我认为这不是正确的做法。
所以,我在问最好的方法是什么?
这是我的声明:
connectionstring = ConfigurationManager.ConnectionStrings["GTC_Frater_Razes.Properties.Settings.db_alarmeConnectionString"].ConnectionString;
它提供以下错误消息
“当前上下文中不存在 ConfigurationManger.ConnectionStrings”
解决方案
所以假设在你的类库中你有类,DataProvider
public class DataProvider
{
private static string m_connectionString;
public static void SetConnectionString()
{
//Or you can use your conventional way to get connection string, but as you can see this call will be one time only, It will help you.
m_connectionString = ConfigurationSettings.AppSettings["connString"];
}
public static DataTable GetDataFromDataBase(string query)
{
DataTable tbl = new DataTable();
using (MySqlConnection conn = new MySqlConnection(m_connectionString))
{
MySqlCommand cmd = new MySqlCommand(query, conn);
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(tbl);
}
return tbl;
}
}
DataProvider 的静态方法SetConnectionString()
应该在软件运行的早期调用,最好在启动时调用。静态方法GetDataFromDataBase()
将接受查询并返回包含数据库数据的数据表。
因此(在一般 winform 情况下),文件中的静态类Program
将Program.cs
如下所示,
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
DataProvider.SetConnectionString();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
在您的 App.config 中,您应该有一个标签
<configuration>
<appSettings>
<add key="connString" value="server=<serverIP>;user id=<user>;database=<databaseName>;pooling=true" />
</appSettings>
</configuration>
推荐阅读
- ios - iOS:应用启动后,UIApplication.sharedApplication.keyWindow.rootViewController==nil
- react-native - 后退按钮处理程序没有被调用本机反应
- javascript - 如何每十分钟获取一次日期数据
- java - 替代阿帕奇河?
- python - 哪种格式的文档字符串是标准的?
- visual-studio - 如何编辑 Visual Studio 为我创建的 ico 文件?
- python-3.x - 有什么建议可以让 python 代码更快吗?
- laravel - laravel - 重置多个帐户的密码
- python - 获取一个列表并打印所有不等于 0 的元素的索引
- azure-devops - 在 Azure DevOps 中排队生成给我一个错误“进程无法访问文件......”