0

ODPDBアプリケーションで使用しています。アプリケーションのラッパー クラスを作成しましたODP。これは、直線的に実行されるデスクトップ アプリケーションです (ユーザーは、実行中の操作中に他の操作を行うことはできません。GUI は操作中にロックされます)。これを考慮して、単一のOracleConnectionオブジェクトをメンバーとして作成し、それをすべてのクエリに使用しました。しかし、ベストプラクティスはsthを使用することです。お気に入り:

using (SqlConnection connection = new SqlConnection(connectionString))  
{  
    SqlCommand command = connection.CreateCommand();  

    command.CommandText = "mysp_GetValue";  
    command.CommandType = CommandType.StoredProcedure;  

    connection.Open();  
    object ret = command.ExecuteScalar();  
}

すべての場合(線形実行であっても)。

このように使用する必要がありますか、それともOracleConnection十分に独身ですか?

今、私はラッパー オブジェクトの接続を呼び出しておりm_OracleConnection.open(connectionString)、アプリケーションの起動中に呼び出します。しかし、クエリごとに個別の接続を作成すると、接続の状態をどのように保持するのでしょうか? のようなブール値bool m_IsConnectedで十分でしょうか?

また、接続がソフトまたはハードの方法で失われた場合、ユーザーにどのように警告できますか?

4

1 に答える 1

1

ここでの重要な質問は、ODPOracleConnectionは接続プーリングを実装していますか? そうである場合(そして多くの ADO.NET プロバイダーがそうしいる場合)、「ベスト プラクティス」のコードはまったく問題ありません。接続を開いているように見えるかもしれませんが、実際には「プールから基礎となる接続を取得するか、利用可能な接続がない場合は接続する」接続プーリングを使用しています。(の最後にある) は、基礎となる接続を解放してプールに戻します。このアプローチでは、接続の状態を追跡する必要はありません。プールにそれを心配させます。Open()Dispose()using

デフォルトでODPで接続プーリングが有効になっているようで、接続文字列パラメーターを調整して調整します(source

于 2013-06-17T11:18:32.190 に答える