11

C# アプリケーションでは、OleDBConnection一度作成する必要がありますか?それとも SQL ステートメントが実行されるたびに作成する必要がありますか?

他の人が書いた C# コードを見ています。すべての SQL ステートメントの前に、OleDbConnection接続文字列が MDB データベースを指すオブジェクトが作成されます。

毎回 OleDbConnection オブジェクトを作成するのが適切ですか、それともアプリケーションの開始時にオブジェクトを作成し、それ以降使用する必要がありますか。

4

5 に答える 5

7

ADO.NET を使用するためのベスト プラクティスによると、次のようになります。

高性能アプリケーションは、使用中のデータ ソースへの接続を最小限の時間維持し、接続プーリングなどのパフォーマンス強化テクノロジを活用します...

于 2010-08-11T13:27:54.157 に答える
7

データベースで接続プーリングが利用可能であると仮定すると、データベースへの呼び出しごとに接続を開いたり閉じたりする必要があります。これにより、データベース接続の限られたリソースを必要なときにのみ使用し、呼び出しが終了したらすぐに他の呼び出し元が使用できるようにプールに戻すことができます。接続を維持すると、有限のリソース (データベースへの利用可能な接続の合計) がすぐに使い果たされ、アプリケーションのスケーラビリティとパフォーマンスが大幅に妨げられます。

私は通常、using ステートメントを使用して、使用後に接続が確実に閉じられるようにします。以下を参照してください。

  using (ODBCConnection c = new ODBCConnection(ConnectionString))
  {
    c.Command.CommandType = CommandType.Text;
    // make a call
  }

楽しみ!

于 2010-08-11T13:28:26.393 に答える
4

状況によります。

複数のステートメントを連続して実行する場合は、一度開いてすべてのステートメントを実行してから閉じる方がパフォーマンスの面で優れています。

プログラムの起動時に接続を開き、何が起こっているかに関係なく、プログラムが閉じるまで開いたままにすることについて質問している場合は、いいえ。使い終わったらすぐに閉じてください。接続を開いたままにしない方がよいでしょう。

誰も考えたことのないもう 1 つの要因は、コードを追跡し、接続がどこで開かれ、いつ閉じられたかを追跡しなければならないメンテナンス プログラマーです。たとえば、データベースにアクセスし、それぞれが接続を必要とするいくつかの他の関数に分岐するプログラムがあるとします。コードでそのようなものを追跡するのは悪夢です。

繰り返しになりますが、この要因は適切な操作とパフォーマンスにとって二次的なものですが、複雑なアプリでは考慮すべき事項です。

主な要因は、パフォーマンスにどのように影響するか、接続を開いたままにしておくことのコストです。それぞれの状況でそれを決定する必要があります。

于 2010-08-11T13:23:39.627 に答える
1

データベースへの接続は、データベースで直接アクティビティを実行しているときにのみ開く必要があります。アプリケーションが他のアクティビティを実行している間、データベースへのオープン接続を維持すると、接続プールが制限に達すると、他のユーザーがデータベースにアクセスするのをブロックできます。

クライアントPCで実行するCPUを集中的に使用する機能がある場合は、接続を閉じた後でこのタスクを実行して、接続を拘束しないようにする必要があります。

ただし、実行する一連のデータベース機能がある場合は、これらを1つの開いた接続で一緒に実行することにより、クライアントのパフォーマンスを向上させることができます。

于 2010-08-11T15:00:28.780 に答える
0

データベースから何かが必要になるたびに接続を開き、後で閉じる必要があります。物理的に接続を閉じるタイミングを決定するために、接続プールに任せます。

于 2010-08-11T13:23:51.590 に答える