C#阻止ConnectionStringBuilder以等号转义密码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#阻止ConnectionStringBuilder以等号转义密码相关的知识,希望对你有一定的参考价值。

我有一个密码,我无法更改,其密码相同。当使用OdbcConnectionStringBuilder时,它适用于没有等号的密码,但是当我这样做时它会转义变量。这有效,

        builder.DataSourceName = "SERVER";
        builder.DatabaseFile = "THISSERV";
        builder.UserID = "DBA";
        builder.Password = "XU5%^YhZ";

并生成以下连接字符串

"UserID=DBA;Password=XU5%^YhZ;DatabaseFile=THISSERV;DataSourceName=SERVER"

但是,如果你输入一个等号

        builder.DataSourceName = "SERVER";
        builder.DatabaseFile = "THISSERV";
        builder.UserID = "DBA";
        builder.Password = "XU5%^Yh=Z";

它使用密码转义生成以下连接字符串。

"UserID=DBA;Password="XU5%^Yh=Z";DatabaseFile=THISSERV;DataSourceName=SERVER"

我怎么能避免这个?前面的例子是正确的,但在我的应用程序中,我实际上也在解密密码,如果没有相同的话,这不会影响任何东西,我试着将@放在StringCipher前面,但它没有用。它看起来像这样,第一个参数实际上是一个变量。

builder.Password = StringCipher.Decrypt("0jURE7f9aTOItD5tgl9E6YoBKhMRaxDVj1KfS0SJ/ZBxIKVVbVYZXHMKgndI", "JlkIUJdfolsdff352345rf")
答案

你需要根据{ }用大括号Odbc ConnectionString escape guidelines包围密码:

用大括号({})括起来的DSN或连接字符串值包含任何字符[] {}(),;?* =!@完整地传递给驱动程序。

所以这样称它应该工作:

builder.Password = "{XU5%^Yh=Z}";

以上是关于C#阻止ConnectionStringBuilder以等号转义密码的主要内容,如果未能解决你的问题,请参考以下文章

Matlab 是不是在 MEX/C 代码中阻止或拦截 free()

如何阻止管道中的写入,直到读取发生? (在 C 中)

C 编程:模数是不是忽略结果中的前导零?我怎样才能阻止它? [复制]

SDL/C++ OpenGL 程序,如何阻止 SDL 捕获 SIGINT

C#阻止ConnectionStringBuilder以等号转义密码

当C绑定阻止时,Python是否会发布Global Interneter Lock?