C# connectionstring中的非字母数字(例如分号)
我在网上搜索了一个简单的方法来解决我的问题,但我觉得奇怪的是,没有人想出一个方法来“如果密码包含非字母数字字符,那么就获得一个正确的连接字符串” 我的问题:C# connectionstring中的非字母数字(例如分号),c#,vb.net,connection-string,non-alphanumeric,C#,Vb.net,Connection String,Non Alphanumeric,我在网上搜索了一个简单的方法来解决我的问题,但我觉得奇怪的是,没有人想出一个方法来“如果密码包含非字母数字字符,那么就获得一个正确的连接字符串” 我的问题: 我有一个用户的密码包含以下一个或多个字符: ` ~ ! @ # $ % ^ & * ( ) _ + - = { } | \ : " ; ' < > ? , . / `~!@$%^&*( ) _ + - = { } | \ : " ; ' < > ? , . / 因为connectionstring格式是“KEY=VA
我有一个用户的密码包含以下一个或多个字符:
` ~ ! @ # $ % ^ & * ( ) _ + - = { } | \ : " ; ' < > ? , . /
`~!@$%^&*( ) _ + - = { } | \ : " ; ' < > ? , . /
因为connectionstring格式是“KEY=VALUE;KEY2=VALUE2“如果密码包含分号,那当然是个问题
所以我做了一些研究,发现了这些“连接字符串规则”
- 除了放在值或引号内的空白字符外,所有空白字符都将被忽略
- 虽然空白字符会影响连接池机制,但池连接必须具有完全相同的连接字符串
- 如果分号(;)是值的一部分,则必须用引号(“)分隔
- 如果值以双引号(“”)开头,请使用单引号(“”)
- 相反,如果值以单引号(')开头,则使用双引号(“)
- 不支持转义序列
- 值类型不相关
- 名称不区分大小写
- 如果关键字=值对在连接字符串中出现多次,则使用与最后一次出现关联的值
- 但是,如果provider关键字在字符串中出现多次,则使用第一次出现的关键字
- 如果关键字包含等号(=),则必须在其前面加上一个等号,以指示它是关键字的一部分
- 如果值前面或后面有空格,则必须用单引号或双引号括起来,即关键字=“value”,否则空格将被删除
是否有人在connectionstring中使用了“FormatConnectionstring”方法?或者我在这里做了一些完全错误的事情,而我的问题确实存在于其他地方?使用
sqlConnectionString构建器;要么:
- 设置属性,读取连接字符串(要创建)
- 设置连接字符串,读取属性(要分析)
您尝试过RegEx吗?我已经考虑过了,是的,但还没有找到解决方案,因为有许多不同类型的场景(我想)您可以想到哪些不同的场景。。。RegEx为allI工作我只是觉得奇怪,没有人发布方法或东西来解决这个问题。。因此,要么我做错了什么,要么修复这个问题的代码太容易了,甚至都懒得发布:d这个线程中的最后两篇文章描述得很好:Dim conn作为新的SqlConnectionStringBuilder()conn.DataSource=“localhost”conn.UserID=“TestUser”conn.Password=“'hej;dav?,/test$”结果是:数据源=本地主机;用户ID=TestUser;Password=“'hej;dav?,/test$”它似乎做到了这一点。。如果密码以引号开头或包含分号,则会将密码放在两个“”内,否则不会。。但是,您是否使用SqlConnectionStringBuilder来解决这类问题,还是在编写代码时默认使用它?@Thomas通常连接字符串只是在传递过程中不接触它们,所以这不是我每天都做的事情:但当我确实需要操纵或检查CS时:是的,我总是使用CSBuilder