通过.net winform应用程序连接到sql server

时间:2011-03-01 07:44:57

标签: c# .net sql sql-server sql-server-2005

我正在使用form1创建一个简单的c#.net winform应用程序,它将连接到sql server。

我希望在建立与sql server的连接之前,应用程序要求用户输入登录名&密码连接。

为此我该怎么做:

获取登录名称&两个文本框中的密码&将它们传递给连接字符串 要么 我应该将它们传递给app.config文件&然后使用form1.cs中的app.config文件中的字符串?

这可以解决安全问题吗?如果没有,那么实现这项任务的其他方式是什么?

5 个答案:

答案 0 :(得分:5)

我会这样做:

  • 使用SqlConnectionStringBuilder组件
  • app.config
  • 定义服务器名称,数据库名称等内容
  • 该组件还有两个用户名和密码属性 - 从提示用户提供此信息的对话框中填充这些属性
  • 然后SqlConnectionStringBuilder为您提供用于连接SQL Server的正确连接字符串

<强>更新

我的建议是存储基本连接字符串,如下所示:

<configuration>
  <connectionStrings>
     <add name="MyConnStr" 
          connectionString="server=A9;database=MyDB;" />
  </connectionStrings>
</configuration>

然后将这个“骨架”连接字符串(不完整 - 仅此一项不起作用!)加载到SqlConnectionStringBuilder

string myConnStr = ConfigurationManager.ConnectionStrings["MyConnStr"].ConnectionString;

SqlConnectionStringBuilder sqlcsb = new SqlConnectionStringBuilder(myConnStr);

然后在对话框中从用户处获取用户名和密码,并将其添加到连接字符串构建器中:

sqlcsb.UserID = tbxUserName.Text.Trim();
sqlcsb.Password = tbxPassword.Text.Trim();

然后从SqlConnectionStringBuilder

获取生成的完整连接字符串
string completeConnStr = sqlcsb.ConnectionString;

using(SqlConnection _con = new SqlConnection(completeConnStr))
{
   // do whatever you need to do here....
}

答案 1 :(得分:1)

将登录名传递给连接字符串。 app.Config不是存储用户交互的地方。

答案 2 :(得分:1)

实现它的另一种方法可能是使用Windows身份验证在SQL服务器上进行身份验证。这样,本地Windows用户可以拥有数据库的某些安全权限,并且应用程序的用户必须输入任何凭据。

使用的凭据是什么?它们是用于与数据库建立连接,还是用于访问应用程序中的用户帐户条目和安全权限?

答案 3 :(得分:1)

要保护字符串,请使用SecureString Class。

答案 4 :(得分:1)

Sql身份验证详细信息始终与应用程序身份验证详细信息分开(有例外...例如:您创建自己的sql server客户端版本)

  • 在app.config中保留数据库连接详细信息。
  • 理想情况下,应该包含一个启用了应用级限制的用户。
  • 您说的登录是一个存在于C#中的验证模块。例如:Windows身份验证,表单身份验证等。