2011-03-01 52 views
3

我正在用一个form1连接到sql server来制作一个简单的c#.net winform应用程序。通过.net winform应用程序连接到sql server

我想建立一个连接到sql server之前,应用程序要求用户输入登录名&密码连接。

这个我应该怎么办:

采取的登录名&密码两个文本框&他们传递给连接字符串 或 我应该把它们传递给app.config文件&然后使用来自form1.cs中app.config文件的字符串?

这样可以解决安全问题吗?如果不是,那么执行这项任务的其他方式是什么?

回答

5

我这样做:

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

更新:

我的建议是存储基本的连接字符串这样的:

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

然后加载这个“骨架”连接字符串(这是不完整的 - 单独韩元't工作!)进入你的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.... 
} 
+0

先生我在app.config文件根据你的答案使用它:但它不工作<?xml version =“1.0”encoding =“utf-8” ?> <结构> <添加键= “数据源” 值= “服务器= A-9; ”/> <添加键=“ 数据库” 值= “数据库名称= IMPORTDATA;”/ > <添加键= “受信任” 值= “Trusted_Connection =真”/> sqlchild

+0

这是Form1.cs代码: string connectString = ConfigurationSettings.AppSettings [“Data Source”+“Database”+“Trusted”]; – sqlchild

+0

先生,请帮我拿出代码 – sqlchild

1

通行证登录连接串。 app.Config不是存储用户交互的地方。

1

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

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

1

对于固定字符串,请使用SecureString类。

+1

没有意义,因为在构建连接字符串时,它会被复制到常规字符串。 – Joe

1

SQL身份验证的细节始终保持从申请认证的详细信息独立(当然也有例外...例如:乌尔使乌拉圭回合自己的SQL Server客户端的版本)

  • 保持你的数据库连接细节的app.config。
  • 它应该理想地包含一个启用了应用级限制的用户。
  • 你所说的登录是一个存在于C#中的认证模块。例如:Windows身份验证,表单身份验证等
相关问题