Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过.net winform应用程序连接到sql server_C#_.net_Sql_Sql Server_Sql Server 2005 - Fatal编程技术网

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

C# 通过.net winform应用程序连接到sql server,c#,.net,sql,sql-server,sql-server-2005,C#,.net,Sql,Sql Server,Sql Server 2005,我正在用form1制作一个简单的c#.net winform应用程序,它将连接到sql server 我希望在建立到sql server的连接之前,应用程序要求用户输入登录名和密码进行连接 为此,我应该做什么: 在两个文本框中输入登录名和密码,并将其传递给连接字符串 或 我是否应该将它们传递到app.config文件,然后在form1.cs中使用app.config文件中的字符串 这样可以解决安全问题吗?如果没有,那么执行此任务的其他方法是什么?我会这样做: 使用组件 从app.config

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

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

为此,我应该做什么:

在两个文本框中输入登录名和密码,并将其传递给连接字符串 或 我是否应该将它们传递到app.config文件,然后在form1.cs中使用app.config文件中的字符串

这样可以解决安全问题吗?如果没有,那么执行此任务的其他方法是什么?

我会这样做:

  • 使用组件
  • app.config
  • 该组件还具有用户名和密码的两个属性-从提示用户输入此信息的对话框中填充这些属性
  • 然后,该SqlConnectionStringBuilder将为您提供用于连接SQL Server的正确连接字符串
更新:

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

<configuration>
  <connectionStrings>
     <add name="MyConnStr" 
          connectionString="server=A9;database=MyDB;" />
  </connectionStrings>
</configuration>
然后在对话框中从用户处获取用户名和密码,并将其添加到连接字符串生成器:

sqlcsb.UserID = tbxUserName.Text.Trim();
sqlcsb.Password = tbxPassword.Text.Trim();
然后从
SqlConnectionStringBuilder
获取生成的完整连接字符串:

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

SqlConnectionStringBuilder sqlcsb = new SqlConnectionStringBuilder(myConnStr);
string completeConnStr = sqlcsb.ConnectionString;

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

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

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


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

要保护字符串,请使用类。

Sql身份验证详细信息始终与应用程序身份验证详细信息分开保存(也有例外……例如:您正在制作自己版本的sql server客户端)

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

没有意义,因为在构建连接字符串时,它将被复制到常规字符串。先生,根据您的回答,我正在app.config文件中使用它:但它不起作用。这是Form1.cs代码:string connectString=ConfigurationSettings.AppSettings[“数据源”+“数据库”+“受信任”];