C# 为连接字符串动态提供用户名和密码

C# 为连接字符串动态提供用户名和密码,c#,mysql,connection,C#,Mysql,Connection,我正在使用C#winform应用程序,使用MySql作为后端数据库。使用App.config文件,应用程序读取连接字符串以连接数据库,如下所示: <?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionstring> <addkey="MySQL.DB"value="server=localhost;database=mysqldbname;user=usernam

我正在使用C#winform应用程序,使用MySql作为后端数据库。使用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读取其他信息,如数据库名称、服务器等


Ahmed

您可以使用
appSettings

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

您可以使用
appSettings

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

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


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

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


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

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

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

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

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

@这是一个非常好的建议,但Damith提供了更好的解决方案,并举例说明。不,Damith提供了一个较差的解决方案,并举例说明。如果你想使用它,因为你可以复制和粘贴示例,而不需要自己思考,那么这取决于你。事实上,不……这不仅仅是复制/粘贴……我必须在连接方面做更多的更改……显然,当一个新手发布问题时,这只是一个症状,而不是整个项目。Damith的解决方案为我的项目提供了一条清晰的实现路径。你是说我的解决方案没有为你的项目提供清晰的实现路径?我已经告诉你该怎么做了。你只需要按照那些非常简单的说明去做。而且,这也是你应该做的。使用连接字符串生成器,如果您还没有数据,则无需添加伪值或占位符,但也可以在适当的情况下提供默认值。如果你不想用正确的方式去做,那就看你了。我是说Damith的解决方案为解决我的问题提供了更清晰的途径。任何想为这类问题寻找答案的人都会选择Damith的方法。@jmcilhinnet这是一个非常好的建议,但Damith用例子提供了更好的解决方案。不,Damith用例子提供了较差的解决方案。如果你想使用它,因为你可以复制和粘贴示例,而不需要自己思考,那么这取决于你。事实上,不……这不仅仅是复制/粘贴……我必须在连接方面做更多的更改……显然,当一个新手发布问题时,这只是一个症状,而不是整个项目。Damith的解决方案为我的项目提供了一条清晰的实现路径。你是说我的解决方案没有为你的项目提供清晰的实现路径?我已经告诉你该怎么做了。你只需要按照那些非常简单的说明去做。而且,这也是你应该做的。使用连接字符串生成器,如果您还没有数据,则无需添加伪值或占位符,但也可以在适当的情况下提供默认值。如果你不想用正确的方式去做,那就看你了。我是说Damith的解决方案为解决我的问题提供了更清晰的途径。任何想为这类问题寻找答案的人都会选择Damith的方法。