使用app.config文件作为连接字符串,并从用户那里抽象它

本文关键字:用户 那里 抽象 字符串 config app 文件 连接 使用 | 更新日期: 2023-09-27 18:00:19

我的winform应用程序使用了app.config文件,该文件用于存储连接字符串,我的应用程序中的所有表单都使用该连接字符串来连接到远程MySQL数据库。

但是,当我在客户的电脑上安装该应用程序时,我希望他们看不到app.config文件。有可能吗?怎样请帮助编写代码。

此外,还有其他方法可以创建一个所有表单都可以访问的连接字符串吗。比如,我可以创建一个类连接.cs,然后在每个Form中继承它吗。但是如何做到这一点呢?我的意思是如何实现代码

我的主要目标是只创建一个用于连接的字符串,这样,如果我一次又一次地更改它,那么我不需要去更改每个表单,相反,我只需要在一个文件中更改它,它将被所有表单使用

使用app.config文件是一个好的选择,还是建立连接.cs文件更好?

使用app.config文件作为连接字符串,并从用户那里抽象它

您不需要使用来自每个表单的连接字符串,您需要一个数据访问层,然后您可以从任何地方使用它,理论上只能从另一个称为业务逻辑的层使用。。。

需要将数据加载到网格、下拉列表或某些其他控件中的窗体应该使用应用程序堆栈中较低层加载的数据。

阅读有关3层体系结构的内容。

app.config在用户计算机上始终可见,因此不应将存储在其中的任何信息视为机密。

你真的有两个选择:

  • 继续将连接字符串存储在app.config中,但对其进行加密。如果它是一个内部应用程序,并且安全性没有太大问题,这将正常工作。但由于加密密钥必须存储在应用程序中,因此专门的黑客可以检索到它

  • 使用已经建议的三层体系结构。这样,连接字符串存储在中间层,而应用程序不再直接连接到数据库,而是通过中间层连接。然后,可以使用每个用户的用户名/密码或使用windows身份验证来进行身份验证。连接字符串存储在服务器上,只有访问该服务器的人才能查看它并查看DB连接字符串。

如果你只想要一个简单的解决方案,为什么不在文件Connection.cs中创建一个名为"Connection"的类,并让它有一个名的静态属性或属性,例如"ConString",它保存连接字符串:

public class Connection
{
  public static ConString = "your connection string here";
}

然后你可以在任何地方访问它:

OdbcConnection conn = new OdbcConnection(Connection.ConString);

但这只是一种快速而肮脏的方式(尽管它有效)。创建一个自己的数据库层会更好,但也需要做更多的工作。

App.config不能隐藏在用户机器上,这就是您可以做的。你可以加密连接字符串并将其存储在app.config中。看看这篇文章,它向你展示了如何做到这一点。

尝试在[statThread]之前在program.cs中定义连接字符串,方法是将其存储在constr等公共静态字符串变量中。然后,您可以在任何引用的地方使用该var:program.constr