c# - 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()
);
我知道这很愚蠢。为什么有人应该使用带有连接字符串详细信息的密码....但是解决这个问题会很好。
来自德国的问候 :)
解决方案
使用 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;
推荐阅读
- python - 实现键盘记录器时的 F 字符串格式问题
- android - 添加房间库时Android Studio中的Gradle构建错误
- node.js - 对话 Javascript SDK 的 updateToken 不起作用(无法解析)
- javascript - 从 React 中其他生成的路由链接到生成的路由
- javascript - 如何在猫鼬上聚合填充字段
- css - 无法在 Angular 中水平处理项目
- r - 在推文语料库中构建文本相似性时间序列
- dlookup - Recordset.absoluteposition 的 DLookup 函数?
- firebase - 发生异常。_CastError(类型“Null”不是“Map”类型的子类型
' 在类型转换中) - r - 在 R 中使用 MICE 进行多重插补中的名义变量