3

ユーザーが長時間実行されるクエリを実行できるGUIがあります。時々、ユーザーはクエリの実行を後悔し、それらをキャンセルしたいと思うことがあります。クエリはOracleデータベースに対してiBATISを使用して実行されており、java.sql.Statementインターフェースが、ドライバーによって実装される場合とされない場合があるキャンセルメソッドを定義していることを知っています。だから私の質問は、iBATISを使用してこのメ​​ソッドを呼び出してクエリをキャンセルすることは可能ですか(適切なドライバーが与えられた場合)、または進行中の長時間実行クエリを中止する他の方法はありますか?

4

1 に答える 1

2

まあ、
DBサーバーに到達したら、それをキャンセルするのは本当に「DBベンダー固有」の問題だと思います。アプリケーションに関して
クエリをキャンセルすることが要件である場合 (つまり、クエリが Oracle DB サーバーに到達し、そこで実行される場合、結果が得られない限り問題ありません)、Futureの使用を検討してください。 cancel メソッドを持つインターフェイス。 「Callable」を送信してクエリを実行すると、実装であるタイプの適切なオブジェクトが返されます。 中止する必要がある場合は、future オブジェクトの「cancel」メソッドを使用してください。「isCanceled」を使用して送信がキャンセルされたかどうかを確認し、コードで適切な処理を行うこともできます。



于 2013-02-04T07:37:56.587 に答える