2012-06-11 65 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