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

如何在C#中检测SQL连接字符串是否显式指定某参数(如Encrypt)

问题描述

我需要一种可靠的C#方法,检测给定的SQL连接字符串是否显式指定了某个参数,例如Encrypt=...。尝试使用SqlConnectionStringBuilder解析字符串,通过ContainsKey()判断参数是否被指定,但未能成功:

System.Data.SqlClient.SqlConnectionStringBuilder x = 
    new("Data Source=.;Initial Catalog=myDb;Integrated Security=True");

bool encryptSpecified = x.ContainsKey("Encrypt"); // 返回true :(

补充说明

我需要明确检测Encrypt参数是否被显式指定的原因:在当前版本的Microsoft.Data.SqlClient中,Encrypt的默认值为true,但旧版System.Data.SqlClient中其默认值为false。因此,为确保应用升级到Microsoft.Data.SqlClient后的向后兼容性,我希望将Encrypt参数设为false,除非用户已显式指定其值。

解决方案

(基于与@Charlieface的讨论)

// 注意:不能使用Microsoft.Data.SqlClient.SqlConnectionStringBuilder!
System.Data.SqlClient.SqlConnectionStringBuilder scsb = 
    new(connectionString); 
if (!scsb.Encrypted) scsb.Encrypted = false; // 这会显式设置Encrypt参数
connectionString = scsb.ConnectionString;

内容的提问来源于stack exchange,提问作者Mo B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:57:29