2012-06-11 35 views
1

大家好,我想检查我的打开的连接是否与配置文件中的连接字符串相同。如何比较打开的连接字符串与配置文件中的连接字符串

我是想这样的事情:

if(con.ConnectionString == ConfigurationManager.ConnectionStrings["Con1"].ConnectionString); 

,第一部分是给我正确的值,第二部分应该给我相同的字符串。

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

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

什么问题? – Richard

+1

你的问题是什么? – jrummell

+0

我无法比较这两个字符串。我没有通过if语句。是的,他们是相同的 –

回答

2

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

如果你的代码没有工作,那么最有可能是由于两种:

  • 值实际上不是相同的(也许一个有多余的空格或小的变化)。
  • 您正在收到异常。

为了避免后一种情况,我建议你在取消引用前检查你的对象是否为空。

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

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

我没有半结肠癌。我必须在写问题时写下 –

+1

@denonth:“我必须在写问题时写下它”Err ...为什么?在发布之前,您是否对代码进行过任何其他修改? –

+0

如果您的代码中没有分号,那么我就不会看到问题所在。你有错误吗?是不是评估是相同的。请告诉我一些信息? – TimWagaman

-1

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

+0

与'=='比较也会比较字符串的值。而字符串[interned](http://msdn.microsoft.com/en-us/library/system.string.isinterned.aspx),所以如果两个字符串具有相同的值,它们也将具有相同的引用。 – jrummell

+0

有趣。这是C#和Java我不知道的区别。 – Paul

+1

Java和C#看起来很相似,直到你意识到它们不是:) – jrummell