1. ホーム
  2. c#

[解決済み] SqlConnectionを "open/close "するか、"keep open "するか?

2022-07-05 05:40:27

質問

私のビジネスロジックは、静的メソッドを持つ単純な静的クラスで実装されています。これらの各メソッドは、呼び出されたときにSQL接続をオープン/クローズします。

public static void DoSomething()
{
    using (SqlConnection connection = new SqlConnection("..."))
    {
        connection.Open();

        // ...

        connection.Close();
    }
}

しかし、接続オブジェクトを渡して、接続を開いたり閉じたりするのを回避するために、私は パフォーマンスの節約になります。 . 私はずいぶん前に を使ってテストしました。 クラス(SqlConnectionについては不明)を使ってテストを行い、(私が覚えている限り)このように動作するように確かに助けられました。

//pass around the connection object into the method
public static void DoSomething(SqlConnection connection)
{
    bool openConn = (connection.State == ConnectionState.Open);
    if (!openConn)
    {
        connection.Open();
    }

    // ....

    if (openConn) 
    {
        connection.Close();
    }
}

そこで質問ですが、(a)の方法と(b)の方法のどちらを選べばいいのでしょうか?他のstackoverflowの質問でコネクションプーリングがパフォーマンスを救ったというのを読みましたが、私は全く気にする必要はないですね...。

PS. これはASP.NETのアプリで、接続はWebリクエストの間だけ存在します。win-appやサービスではありません。

どのように解決するのですか?

オプションaにこだわる .

コネクションプーリングは、あなたの味方です。