建立数据库连接

时间:2011-01-18 09:01:04

标签: c# window

首先,原谅我的英语。

我和我的小组正计划申请。此应用程序可以安装到其他计算机,并应连接到服务器,数据库受密码保护。

作为一名学生,我们总是以天真的方式做到这一点:

SqlConnection myConnection = new SqlConnection("user id=username;" + 
                                       "password=password;server=serverurl;" + 
                                       "database=database; " + 
                                       "connection timeout=30");

始终硬编码。
如果我们更改数据库的密码或者改变我们的服务器怎么办? 我们还要更改代码中的值,重新编译并在pc中重新安装应用程序。有没有动态的方式来做这些?

我们认为在应用程序的第一次运行中,系统将提示用户输入连接详细信息,并将该数据保存到一个文件中,应用程序每次启动时都会将其提取并用于数据库连接,但是有一个涉及密码。

任何建议,想法,概念,样品等......?如何以更专业的方式做到这一点?请帮忙......谢谢。

4 个答案:

答案 0 :(得分:1)

您可以将数据库设置存储在app.config

http://www.ezzylearning.com/tutorial.aspx?tid=8067328

答案 1 :(得分:0)

Windows允许您加密文件,因此只有作为所有者运行的进程才能读取它们。您可以将密码存储在文件中并加密。请参阅MSDN上的File.Encrypt

这只是安全模型中的一个因素。您可能还希望在应用程序级别加密文件,以便用户运行的恶意软件不会嗅探密码。

答案 2 :(得分:0)

您可以将您的凭据存储在配置文件中 - 这样,无需在每次密码更改时重新编译项目。

配置文件也可以加密,因此您只能通过正在进行的应用程序更改密码。

答案 3 :(得分:0)

有几种方法可以做到这一点。首先,您可以在 app.Config / web.config 文件中保存connectionString。您的连接对象可以使用

访问此字符串
PROJECTNAME.Properties.Settings.Default.YOURCONNECTIONSTRINGNAME

您的app.config文件可能看起来像这样

<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> </configSections> <connectionStrings> <add name="Winforms_Demo.Properties.Settings.dbNordwindConnectionString" connectionString="Data Source=(local)\SQLEXPRESS;Initial Catalog=dbNordwind;User ID=sa" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration>

正如您所看到的,这种可能性仍然保存任何硬编码的用户凭据(尽管您可以通过手动编辑config.file来更改它们(即使在编译之后)。您可以通过添加来创建这样的配置文件项目的新数据源(例如sql server datasource)。然后向导将询问保存connectionString的位置。

另一种可能性是connectionStringBuilder。这个类提供了一些属性:

SqlConnectionStringBuilder conbuild = new SqlConnectionStringBuilder();
conbuild.InitialCatalog = "dbNordwind"; // database name
conbuild.IntegratedSecurity = false;  // true if you use winAuthent
conbuild.UserID = "sa"; // e.g get this info by showing a authent form
conbuild.Password = "123";
conbuild.DataSource = "servername";
SqlConnection con = new SqlConnection(conbuild.ConnectionString);

使用此方法,您甚至可以访问文件并读取任何所需数据。在这种情况下,您必须查看文件的安全措施!

保护您的文件可以通过加密(System.Security命名空间)或将数据保存到任何 isolatedStorage (特定于用户 - 将使用Windows安全性)或通过使用“aspnet_regiis -pef”来加密任何配置文件。