0

我在网上搜索了一个简单的解决方案来解决我的问题,但我觉得奇怪的是,没有人有办法“如果密码包含非字母数字字符,则获取正确的连接字符串”。

我的问题:
我有一个用户的密码包含以下一个或多个字符:

` ~ ! @ # $ % ^ & * ( ) _ + - = { } | \ : " ; ' < > ? , . /

由于连接字符串格式是“KEY=VALUE;KEY2=VALUE2”,如果密码当然包含分号,就会出现问题。

所以我做了一些研究,发现了这些“连接字符串规则”

  • 所有空白字符,除了放在值内或引号内的字符外,都将被忽略

  • 空白字符虽然会影响连接池机制,但池连接必须具有完全相同的连接字符串

  • 如果分号 (;) 是值的一部分,则必须用引号 (") 分隔

  • 如果值以双引号 (") 开头,则使用单引号 (')

  • 相反,如果值以单引号 (') 开头,则使用双引号 (")

  • 不支持转义序列

  • 值类型不相关

  • 名称是 case iNsEnSiTiVe

  • 如果 KEYWORD=VALUE 对在连接字符串中出现多次,则使用与最后一次出现关联的值

  • 但是,如果 provider 关键字在字符串中出现多次,则使用第一次出现。

  • 如果关键字包含等号 (=),则必须在其前面附加一个等号,以表明它是关键字的一部分。

  • 如果一个值前面或后面有空格,它必须用单引号或双引号括起来,即 Keyword=" value ",否则空格被删除。

然后我读了一堆线程,其中人们试图将上述内容实现到他们的“格式化连接字符串方法”中,但是当他们开始时,似乎更多的场景浮出水面。

我的问题是:

是否有人在连接字符串中使用了“FormatConnectionstring”方法 - 或者我在这里做错了什么并且我的问题真的存在于其他地方?

4

1 回答 1

1

使用SqlConnectionStringBuilder;任何一个:

  • 设置属性,读取ConnectionString(创建)
  • 设置ConnectionString,读取属性(解析)
于 2014-06-05T06:50:33.173 回答