当执行返回未知数量结果的查询时,则需要使用
execute()。此方法返回一个
boolean指示结果类型的:
true
:结果是ResultSet
false
:结果是更新计数
如果结果为
true,则可使用
getResultSet()来检索
ResultSet,否则
getUpdateCount()可使用以获取更新计数。如果是更新计数,
-1则意味着没有更多结果。请注意,更新计数也将
-1是当前结果为时的计数
ResultSet。最好知道,
getResultSet()如果没有更多结果或者结果是更新计数,则应返回null,因此SQL
Lite引发异常的行为似乎是错误的。
现在,如果要检索更多结果,请致电
getMoreResults()(或它的兄弟接受
int参数)。
boolean此方法的返回值与的含义相同
execute(),因此
false并不意味着不再有结果!
如果
getMoreResults()返回false 和
getUpdateCount()return
-1(如Javadoc中所述)
, 将没有更多结果。
本质上,这意味着如果您要正确处理所有结果,则需要执行以下操作:
PreparedStatement pstmt = connection.prepareStatement(...);// ...boolean result = pstmt.execute();while(true) if (result) { ResultSet rs = pstmt.getResultSet(); // Do something with resultset ... } else { int updateCount = pstmt.getUpdateCount(); if (updateCount == -1) { // no more results break; } // Do something with update count ... } result = pstmt.getMoreResults();}


