首页 > 解决方案 > C# .Net MysqlConnector ConnectionString 密码问题/问题

问题描述

在一些愚蠢的密码问题上需要帮助。以下问题:

无法使用某些密码连接到 mysql 服务器 ^^

如果我使用具有相同“连接字符串”详细信息的密码,例如:

以下密码正好在 MySql Server 中(引号、双引号、分号);

“密码=123456”;// 有效

“密码=123456;”;// 有效

";密码=123;456;' // System.ArgumentException

";pwd=123;456;'" // System.ArgumentException

//Connection String Variant 1:

string connString = string.Format("server={0};port={1};uid={2};pwd={3};database={4};sslmode=preferred",
                tbDbServername.Text.ToLower(),
                (uint)Convert.ToInt32(tbDbServerPort.Text),
                tbDbServerUsername.Text.ToLower(),
                tbDbServerPassword.Password,
                tbDbServerDatabase.Text.ToLower()
                );

//Connection String Variant 2:

string connString = string.Format("server={0};port={1};uid={2};pwd='{3}';database={4};sslmode=preferred",
                tbDbServername.Text.ToLower(),
                (uint)Convert.ToInt32(tbDbServerPort.Text),
                tbDbServerUsername.Text.ToLower(),
                tbDbServerPassword.Password,
                tbDbServerDatabase.Text.ToLower()
                );

我知道这很愚蠢。为什么有人应该使用带有连接字符串详细信息的密码....但是解决这个问题会很好。

来自德国的问候 :)

标签: c#mysql.net

解决方案


使用 aMySqlConnectionStringBuilder来构造您的连接字符串。它会做任何需要的转义/引用。

在你的情况下,你会想要这样做:

MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder()
{
    Server = tbDbServername.Text.ToLower(),
    Port = (uint)System.Convert.ToInt32(tbDbServerPort.Text),
    UserID = tbDbServerUsername.Text.ToLower(),
    Password = tbDbServerPassword.Password,
    Database = tbDbServerDatabase.Text.ToLower(),
    SslMode = MySqlSslMode.Preferred
};

string connString = builder.ConnectionString;

推荐阅读