Java 中的 ExecuteQuery() 与 getResultSet()

Pra*_*wat 5 java sql jdbc

是什么区别statement.executeQuerystatement.getResultSet()。我相信两者都会返回ResultSet一个 select 语句,但是当我们应该使用它们中的哪一个时,是否有任何特定的标准。

Mar*_*eel 7

通常,executeQuery如果您知道正在执行 select 语句,则应该使用。该getResultSet()方法本身不执行语句

所述getResultSet的目的是在与组合使用execute。这些execute方法旨在与未知的语句类型或可以产生多个结果(即 0 个或多个更新计数或结果集)的语句一起使用。

简而言之:您通常应该使用executeQuery.

execute如果代码不知道它将执行什么查询(更新、查询或更复杂的东西),例如在执行用户提供的查询时,您应该使用的一个简单示例。

另一个示例是 SQL Server 存储过程,它可以返回多个更新计数和结果集。

处理结果的通用方法execute是:

boolean isResultSet = statement.execute(sql);
while (true) {
    if (isResultSet) {
        try (ResultSet rs = statement.getResultSet()) {
            // do something with result set
        }
    } else {
        int updateCount = statement.getUpdateCount();
        if (updateCount == -1) {
            // -1 signals no more results
            break;
        }
        // do something with update count
    }
    // move to next result
    isResultSet = statement.getMoreResults();
}
Run Code Online (Sandbox Code Playgroud)

这确保所有*结果都得到处理。

*:此示例忽略允许多个异常与结果集和更新计数交错的系统(如 SQL Server)的异常结果,有关更详细的示例,请参阅如何使用 JDBC 从存储过程中获取*所有内容*