Java中的执行查询()与获取结果集()

hivapdat  于 2023-01-29  发布在  Java
关注(0)|答案(2)|浏览(163)

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

58wvjzkj

58wvjzkj1#

一般来说,如果你知道你正在执行一个select语句,你应该使用executeQuerygetResultSet()方法本身不执行语句
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();
}

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

ogq8wdun

ogq8wdun2#

查看JavaDoc中的这些方法。getResultSet可以返回null,但executeQuery从不返回null。
还有更多的约束。例如,不能在PreparedStatementCallableStatement上调用executeQuery

相关问题