You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL及应用层处理含特殊字符的数据库登录凭据

解决含特殊字符的数据库账号创建及配置文件连接字符串问题

一、SQL脚本创建带特殊字符的登录账号

创建包含特殊字符(如单引号、§、°等)的SQL登录时,核心是正确转义SQL语法特殊字符,并确保字符集支持:

  • 转义单引号:SQL字符串内的单引号需替换为两个连续单引号('')
  • 使用Unicode字符集:对非ASCII特殊字符(如§、°)的用户名/密码,字符串前加N前缀,确保用NVARCHAR存储
  • 示例脚本:
-- 示例用户名/密码:~A1\{<°!§$%&/a()'\";;=?_:[/>}]*
DECLARE @username NVARCHAR(256) = N'~A1\{<°!§$%&/a()''";=?_:[/>}]*'
DECLARE @password NVARCHAR(256) = N'~A1\{<°!§$%&/a()''";=?_:[/>}]*'

CREATE LOGIN @username WITH PASSWORD = @password, CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO

二、应用层配置文件连接字符串的特殊字符处理

放弃手动拼接或直接用SecurityElement.Escape()处理,推荐用SqlConnectionStringBuilder自动处理所有特殊字符,避免手动转义失误:

1. 解决分号导致的"Keyword not supported error"

分号是连接字符串的参数分隔符,手动拼接会被误解析。SqlConnectionStringBuilder会自动将包含分号的密码用引号封装,无需手动处理:

var builder = new SqlConnectionStringBuilder();
builder.DataSource = "你的数据库服务器";
builder.InitialCatalog = "目标数据库";
builder.UserID = "~A1\{<°!§$%&/a()'\";;=?_:[/>}]*";
builder.Password = "~A1\{<°!§$%&/a()'\";;=?_:[/>}]*";
builder.IntegratedSecurity = false;

// 生成符合规范的连接字符串
string connectionString = builder.ToString();

2. 解决单/双引号开头的格式错误

SqlConnectionStringBuilder会自动处理以引号开头的密码,正确封装参数值,避免格式解析失败。直接传入原始密码即可,无需手动添加或转义引号。

3. 解决特殊字符(§、°)的编码错误

  • 确保配置文件编码为UTF-8:保存app.config/web.config时选择UTF-8编码(不要用ASCII),非ASCII特殊字符才能正确存储
  • 用生成的字符串直接写入配置:SqlConnectionStringBuilder生成的字符串会自动处理XML转义(如双引号转为&quot;),直接写入配置即可

写入配置文件的示例代码

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.ConnectionStrings.ConnectionStrings["你的连接字符串名称"].ConnectionString = connectionString;
// 保存时自动以UTF-8编码存储
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("connectionStrings");

内容的提问来源于stack exchange,提问作者saravana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 02:03:38