开发者

using app.config file for connection string, and abstract it from users

开发者 https://www.devze.com 2023-03-15 05:55 出处:网络
I have used app.config file for my winform application , the file is used to store the connection string which is used by all the Forms in my applicat开发者_StackOverflow中文版ion to connect to a remo

I have used app.config file for my winform application , the file is used to store the connection string which is used by all the Forms in my applicat开发者_StackOverflow中文版ion to connect to a remote MySQL database.

But when I install the application on my customer's PCs, then I want that they could not see the app.config file. Is it possible? How? Please help with code.

Also, is there any other way, to create a connection string which is accessible by all the Forms. Like, can I make a class connection.cs and then inherit it in every Form. But how to do this? I mean how to implement the code

My main objective is to create just one string for connection, so that , if i change it again and again, then i need not go and change it every Form, instead, i would just change it only in one File , and it would be used by all the Forms

Is using app.config file a good option or making a connection.cs file's a better one?


You don't need to use a connection string from every form, you need a data access layer and then you use it from everywhere, in theory only from another layer called business logic...

A form which needs to load data into a grid, a drop down or some other controls should consume data loaded by lower layers in your application stack.

Read something about 3 tier architecture.


The app.config is always visible on the user machine, so you should not treat any information stored in it as secret.

You really have two options:

  • Continue to store the connection string in the app.config but encrypt it. This will work fine if its an internal app and security is not to much of an issue. But since the encryption key has to be stored in the app a dedicated hacker could retrieve it.

  • use a three tier architecture as suggested already. With this the connection string is stored in the middle tier, while your application no longer connects directly to the database but rather through the middle tier. Authentication can then be done with a user name/password per user or by making use of windows authentication. The connection string is stored on a server and only people with acces to this server can look at it and see the DB connection string.


If you just want a simple solutions why not create a class named for example "Connection" in a file connection.cs and let it have a static attribute or property named for example "ConString" which holds the connection string:

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

Then you can access it everywhere:

OdbcConnection conn = new OdbcConnection(Connection.ConString);

BUT that would only be the quick and dirty way of doing it (although it works). It would be much nicer to create an own Database-Layer - but also much more work.


App.config can't be hidden on users machine, this is what you can do. You can encrypt the connection string and store it in the app.config. have a look on this article, it shows you how to do that.


Try to define your connection string in program.cs before [statThread] by storing it in a public static string variable like constr etc. Then u can use that var anywhere referencing: program.constr

0

精彩评论

暂无评论...
验证码 换一张
取 消