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

问题描述 投票:1回答:1

我有一个密码,我无法更改,其密码相同。当使用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")
c# odbc database-connection string-literals
1个回答
1
投票

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

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

所以这样称它应该工作:

builder.Password = "{XU5%^Yh=Z}";
© www.soinside.com 2019 - 2024. All rights reserved.