PowerBuilder にアプリケーションがあり、多くのユーザーがそれを何時間も使用せずに開いています。操作がコミットを忘れる場合があります。したがって、一部のテーブルは無期限にロックされたままになり、全員が作業できなくなります。すべてのコミットを配置しようとしましたが、これほど大きなアプリケーションでこれをデバッグするのは非常に困難です。アプリケーションがアイドル状態のときにデータベース接続を切断したいと考えています。これは難しくありませんが、私の問題は、マウスまたはキーボードに触れたときに、アプリケーションが接続を再度開く必要があることです。それ、どうやったら出来るの?アイドル状態になるたびにアプリケーションを閉じることはできません。
2 に答える
まず、簡単な方法をとらずに、すべてのトランザクションを閉じる作業に取り掛かることをお勧めします。ロックの問題を除いて、コミットされていないものがある場合、実行される次のステートメントがCOMMITまたはROLLBACKのどちらになるのか、またどちらが現在必要なのかはわかりません。これに関する私の経験では、この種の調査は常にトランザクションに関する他の問題を引き起こします。この問題はおそらくロックよりも大きいです。
再接続に関しては、このルートを使用する場合(明らかに私の最初の選択肢ではありません)、別の設計をお勧めします。次に接続が必要になったときにCONNECTします。基本的に(トランザクションオブジェクトの関数内にコードをカプセル化する場合):
IF DBHandle() = 0 THEN CONNECT using THIS;
PFCのようなフレームワークを使用している場合は、これをコーディングする場所が数か所しかない可能性があります。取得や更新などの作業をカプセル化するフレームワークがない場合は、そうすることを望んでいます。それでも、すべてのキーストロークとマウスの動きでデータベース接続をチェックすることによってパフォーマンスを低下させるよりも優れている可能性があります。
幸運を、
テリー。
mousemove およびキー イベントをキャプチャします。これらのいずれかが起動すると、CONNECT を発行します。声明。
見る:
http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc37781_1150/html/psref/BFCCFFGH.htm