1

こんにちは。開いた接続が構成ファイルの接続文字列と同じかどうかを確認したいと思います。

私はこのようなことを試みていました:

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

最初の部分は私に正しい値を与え、2番目の部分は私に同じ文字列を与えるはずです。

編集:詳細を気にしたくなかったので、これは私の接続文字列全体です:

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

3 に答える 3

2

==文字列の値を比較するために使用することは、C# では正しいです。

コードが機能しない場合は、次のいずれかが原因である可能性があります。

  • 値は実際には同じではありません (余分な空白があるか、小さな変更がある可能性があります)。
  • 例外が発生しています。

後者のケースを回避するには、オブジェクトを逆参照する前に、オブジェクトが null でないことを確認することをお勧めします。

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

if (con != null && con1 != null && con.ConnectionString == con1.ConnectionString) {
    // Connection strings are the same.
}
于 2012-06-11T18:42:30.420 に答える
2

これであなたの問題が説明できると思います:

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 です。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v=vs.100).aspx

于 2012-06-11T19:34:41.037 に答える
-1

文字列を比較する場合は、String1.Equals(String2) を使用することをお勧めします。これにより、文字列の値が比較されます。

于 2012-06-11T18:42:26.313 に答える