【问题标题】:Dynamically Provide Username and password to Connection String为连接字符串动态提供用户名和密码
【发布时间】:2014-02-15 10:29:41
【问题描述】:

我正在使用使用 MySql 作为后端数据库的 C# winform 应用程序。使用 App.config 文件,应用程序读取连接字符串以连接数据库,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
 <configuration>
   <connectionstring>
  <addkey="MySQL.DB"value="server=localhost;database=mysqldbname;user=username;password=12345678;">
   </add>
 </connectionstring>
 </configuration>

有什么方法可以通过输入用户名和密码而不是来自 App.config 而是来自应用程序的用户提供用户名和密码?以便我们能够保护敏感数据。其他信息可以从 app.config 中读取,例如数据库名称、服务器等。

艾哈迈德

【问题讨论】:

    标签: c# mysql connection


    【解决方案1】:

    你可以有appSettings

       <appSettings>
            <add key="ConFormat" value="server=localhost;database=mysqldbname;user={0};password={1};"/>
        </appSettings>
    

    读取并设置值

    var formatString  = ConfigurationManager.AppSettings["ConFormat"].ToString();
    var conString  = string.Format(formatString , SecureUserName, SecurePW);
    

    【讨论】:

      【解决方案2】:

      如果您使用的是原始 ADO.NET,那么您可以使用连接字符串构建器,在您的情况下可能是 MySqlConnectionStringBuilder。使用配置文件中的连接字符串创建一个新实例,设置适当的属性,然后从 ConnectionString 属性中获取结果。

      顺便说一句,您可以将密码和其他敏感数据存储在配置文件中,使用受保护的配置对其进行加密。

      【讨论】:

      • @jmcilhinnet 这是一个非常好的建议,但 Damith 已经通过示例提供了更好的解决方案。
      • 不,Damith 通过示例提供了一个较差的解决方案。如果您想使用它,因为您可以复制和粘贴示例而不必自己考虑,那么这取决于您。
      • 实际上不...不仅仅是复制/粘贴...我必须在连接上做更多的更改...显然当新手发布问题时,这只是一个症状而不是整个项目在这里。 Damith 的解决方案为在我的项目中实施提供了一条清晰的路径。
      • 您是说我的解决方案没有为您的项目提供清晰的实施路径吗?我告诉你具体该怎么做。您只需遵循这些非常简单的说明。此外,这是你应该这样做的方式。使用连接字符串生成器,如果您还没有数据,则无需添加虚拟值或占位符,但您也可以在适当的情况下提供默认值。如果您不想以正确的方式进行操作,那取决于您。
      • 我是说 Damith 的解决方案为解决我的问题提供了更多清晰的途径。任何正在寻找此类问题答案的人显然都会选择 Damith 的方法。
      【解决方案3】:

      像这样更改 app.config 中的代码

      <add key="MySQL.DB"value="server=localhost;database=mysqldbname;user=&usernamefromuser;password=&passfromuser;">
      

      添加一个用于连接的按钮和两个用于用户名和密码的文本框

      按钮代码:

      //other code for mysql variables ...
      string connectionStr= connStrFrom_App_Config.Replace("&usernamefromuser",texBox1.Text).Replace("&passfromuser",textBox2.Text);
      //other code for connecting 
      

      【讨论】:

        猜你喜欢
        • 2019-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-15
        • 1970-01-01
        • 2015-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多