Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# connectionstring中的非字母数字(例如分号)_C#_Vb.net_Connection String_Non Alphanumeric - Fatal编程技术网

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”,否则空格将被删除

然后我读了一堆文章,其中人们正试图将上述内容实现到他们的“Format connectionstring方法”中,但在开始时,似乎有更多的场景出现了

我的问题是:


是否有人在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