繁体   English   中英

Java中的ExecuteQuery()vs getResultSet()

[英]ExecuteQuery() vs getResultSet() in Java

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

通常,如果您知道正在执行select语句,则应使用executeQuery 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();
}

这可确保处理所有*结果。

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

查看JavaDoc以获取这些方法。 getResultSet可以返回null但executeQuery永远不会返回null。

还有更多限制。 例如,无法在PreparedStatementCallableStatement executeQuery

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM