[英]executeQuery() and getResultSet() when retrieving data from callable statement
[英]ExecuteQuery() vs getResultSet() in Java
statement.executeQuery
和statement.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。
还有更多限制。 例如,无法在PreparedStatement
或CallableStatement
executeQuery
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.