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#中是正确的
如果您的代码不工作,很可能是由于以下原因之一:
- 这些值实际上并不相同(可能其中一个有额外的空格或一个小的更改)
- 你得到了一个例外
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)当前时间是