1

Java 呼び出しが Oracle または同様の RDBMS に対して行われた場合、Java はどのようにして Oracle アクションが完了したことを認識しますか?

たとえば、「create table as (select * from table1)」。

Java を介して Oracle でその 1 行の SQL ステートメントを実行すると、Java はどのようにしてコード行が完了したことを認識し、次の Java 命令に進むのでしょうか? 私の推測では、秘密の JDBC が進行中ですが、それが何であるかはわかりません。

誰か説明できますか?

Java でそのコード行を実行するのに必要な時間を調整できることを願っています。ResultSet オブジェクトを元に戻したくなく、代わりにある種の確認が必要な場合は、何かを微調整できます。

4

2 に答える 2

5

他のネットワーク リクエストがレスポンスを取得するのと同じ方法です。

データベースにクエリを送信すると、JDBC ドライバーはネットワーク経由で一連のパケットを送信し、応答を待ちます。データベースが応答を受け取ると (Oracle の場合、最初の N 行が利用可能になると)、ドライバーは応答を構成する一連のパケットをデータベースから受信します。JDBC ドライバーは、これらのパケット内の情報を解析し、JDBC API に従ってアプリケーションに通知します。

これは、何らかの種類のクライアント/サーバー ネットワーク リクエストがある場合に発生するプロセスとまったく同じです。Web ブラウザーは、HTTP サーバーに送信した HTTP 要求がいつ処理されたかをどのように認識しますか? HTTP サーバーの応答がいつ到着し始めるかを認識します。次に、HTTP サーバーはその応答を解析し、HTML 標準などに従って情報を表示します。

于 2013-08-13T02:56:17.467 に答える
2

これは、使用している JDBC ドライバーによって処理されます。データベースと「対話」する方法を知っています。クエリをデータベースに転送し、結果をクライアントに返します。データベースは常に結果 (ResultSet、更新カウントなど) で応答します。それ以外の場合は例外が発生し、通常は SQLException または SQLTimeoutException を通じて知ることができます。より深く掘り下げたい場合に備えて、API は十分に文書化されています。お役に立てれば。

于 2013-08-13T04:01:11.610 に答える