使用app.config文件获取连接字符串,并从用户中提取它

时间:2011-06-26 07:08:15

标签: c# .net winforms app-config

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

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

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

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

使用app.config文件是一个不错的选择还是使connection.cs文件更好?

5 个答案:

答案 0 :(得分:2)

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

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

阅读有关3层架构的内容。

答案 1 :(得分:1)

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

你真的有两个选择:

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

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

答案 2 :(得分:1)

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

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

然后你可以随处访问它:

OdbcConnection conn = new OdbcConnection(Connection.ConString);

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

答案 3 :(得分:0)

App.config无法在用户计算机上隐藏,这是您可以做的。 您可以加密连接字符串并将其存储在app.config中。看看这个article,它会告诉你如何做到这一点。

答案 4 :(得分:0)

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