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();
}
2条答案
按热度按时间58wvjzkj1#
一般来说,如果你知道你正在执行一个select语句,你应该使用
executeQuery
。getResultSet()
方法本身不执行语句。getResultSet
旨在与execute
结合使用。execute
方法旨在与未知语句类型或可生成多个结果(即0个或更多更新计数或结果集)的语句一起使用。简而言之:通常应该使用
executeQuery
。下面是一个简单的例子,如果代码不知道要执行什么查询(更新、查询或更复杂的查询),例如执行用户提供的查询时,应该使用
execute
。另一个示例是SQL Server存储过程,它可以返回多个更新计数和结果集。
处理
execute
的结果的一般方法是:这可确保所有 * 结果都得到处理。
ogq8wdun2#
查看JavaDoc中的这些方法。
getResultSet
可以返回null,但executeQuery
从不返回null。还有更多的约束。例如,不能在
PreparedStatement
或CallableStatement
上调用executeQuery
。