Я создал следующий метод, чтобы проверить, является ли ResultSet пустым.
public static boolean resultSetIsEmpty(ResultSet rs){
try {
// We point the last row
rs.last();
int rsRows=rs.getRow(); // get last row number
if (rsRows == 0) {
return true;
}
// It is necessary to back to top the pointer, so we can see all rows in our ResultSet object.
rs.beforeFirst();
return false;
}catch(SQLException ex){
return true;
}
}
Очень важно учитывать следующие соображения:
CallableStatement объект должен быть установлен, чтобы позволить объекту ResultSet идти в конце и возвращаться наверх.
TYPE_SCROLL_SENSITIVE : объект ResultSet может сместиться в конце и вернуться наверх. Далее можете отловить последние изменения.
CONCUR_READ_ONLY : Мы можем прочитать данные объекта ResultSet, но не можем обновить.
CallableStatement proc = dbconex.prepareCall(select, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);