1

当对 Oracle 或类似的 RDBMS 进行 Java 调用时,Java 如何知道 Oracle 操作已完成?

例如,“ create table as (select * from table1)”。

如果我们通过 Java 在 Oracle 中执行那条单行 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 驱动程序负责。它知道如何与数据库“对话”。它将查询传输到数据库并将结果返回给客户端。数据库将始终以结果(结果集、更新计数等)响应,否则将引发异常,您通常会通过 SQLException 或 SQLTimeoutException 知道。如果您想更深入地挖掘,API 有很好的文档记录。希望这可以帮助。

于 2013-08-13T04:01:11.610 回答