Я пытаюсь захватить размер ResultSet. Теперь, поскольку я использую SQLite, а SQLite поддерживает только курсоры TYPE_FORWARD_ONLY, я пытаюсь понять, как захватить его размер, не вызывая ошибки. Это не будет работать:Получите размер ResultSet в Java для SQLite
int size = 0;
rs.last();
size = rs.getRow();
Нельзя использовать подготовленный оператор, чтобы изменить курсор на прокрутку. Есть ли все равно, чтобы получить размер?
Я также попытался создать метод Loop While, чтобы справиться с этим, и это до сих пор, кажется, не работать
public static int getResultSetSize(ResultSet rs) throws SQLException{
int size = 0;
while(rs.next()){
size++;
}
return size;
}
Любая помощь будет оценена.
EDIT:
Я попытался следующие без успеха
ResultSet rs = DBHelpers.getResultSet("SELECT COUNT(*) FROM USERS;");
int count = 0;
try {
count =rs.getInt(0) ;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Вспомогательный метод для этого является следующим:
public static ResultSet getResultSet(String sql){
ResultSet rs = null;;
try (Statement stmt = conn.createStatement()){
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
System.out.println(e.getMessage());
return null;
}
return rs;
}
Конн является статическая переменная соединения инициализирован в программа указывает на правильную базу данных и не вызывает никаких проблем.
Я пробовал подсчет, но он говорит, что результирующий набор закрыт когда я отправляюсь назначать его int. – Jrawr
Я считаю, что ваша проблема в ваших попытках с ресурсами. Rs закрывается в конце. Удалите попытку с помощью ресурсов и убедитесь, что вы используете createStatement всегда вместо повторного использования одних и тех же rs. – facundop
Фактически удаление блока catch try помогло, и оно работает сейчас. Спасибо. – Jrawr