C# 如何将打开的连接字符串与配置文件中的连接字符串进行比较

C# 如何将打开的连接字符串与配置文件中的连接字符串进行比较,c#,connection-string,C#,Connection String,嗨,我只想检查我打开的连接是否与配置文件中的连接字符串相同 我试着这样做: if(con.ConnectionString == ConfigurationManager.ConnectionStrings["Con1"].ConnectionString); 第一部分是给我正确的值,第二部分应该给我相同的字符串 编辑: 这是我的整个连接字符串,因为我不想用细节来打扰您: if (DateTime.Now.Subtract(lastDBcheck).TotalSeconds > 10 &

嗨,我只想检查我打开的连接是否与配置文件中的连接字符串相同

我试着这样做:

if(con.ConnectionString == ConfigurationManager.ConnectionStrings["Con1"].ConnectionString);
第一部分是给我正确的值,第二部分应该给我相同的字符串

编辑: 这是我的整个连接字符串,因为我不想用细节来打扰您:

if (DateTime.Now.Subtract(lastDBcheck).TotalSeconds > 10 && con.ConnectionString==ConfigurationManager.ConnectionStrings["Con1"].ConnectionString)

比较字符串时,最好使用String1.Equals(String2)。这将比较字符串的值。

使用
=
比较字符串的值在C#中是正确的

如果您的代码不工作,很可能是由于以下原因之一:

  • 这些值实际上并不相同(可能其中一个有额外的空格或一个小的更改)
  • 你得到了一个例外
为了避免后一种情况,我建议您在取消引用对象之前检查对象是否为null

var con1 = ConfigurationManager.ConnectionStrings["Con1"];

if (con != null && con1 != null && con.ConnectionString == con1.ConnectionString) {
    // Connection strings are the same.
}

我想这可以解释你的问题:

The .NET Framework Data Provider for SQL Server does not persist or return 
the password in a connection string unless you set Persist Security Info to true.
默认值为False


与比较
==
还比较字符串的值。字符串是,所以如果两个字符串具有相同的值,它们也将具有相同的引用。有趣。这是我不知道的C#和Java之间的区别。Java和C#看起来非常相似,直到你意识到它们不是:)我没有分号。我必须边写边写question@denonth:“我必须在写问题的时候说”呃。。。为什么?在发布代码之前,您是否对代码进行了任何其他修改?如果代码中没有分号,那么我看不出问题出在哪里。你有错误吗?评估结果不一致。请提供一些信息好吗?配置文件中的连接字符串有一个密码值,在con.connectionstring中没有密码。你有什么建议?我不能比较这两个字符串。我没有通过if声明。是的,它们是一样的,你说“我没有通过if声明”是什么意思?您是否收到异常(例如NullReferenceException)?代码只是无限期地阻塞吗?如果不传递If语句,会发生什么?在该行上放置一个断点并开始调试。到达后,使用
Locals
Watch
Immediate窗口检查这三个变量:
lastDBcheck
con
ConfigurationManager.connectionString[“Con1”]
。有四种可能的结果:1)当前时间是