Пустой ResultSet

Проблема максимально проста: Данный код возвращает пустой ResultSet, а именно выводит на экран 0. Причем, запуск такого же SQL запроса непосредственно из MySQL CLI возвращает ответ, так как запись с таким username существует. Подключение к DB происходит, так как другие запросы вроде insert работают.

Statement statement = DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "user", "pass").createStatement();

ResultSet result = statement.executeQuery("SELECT `token` FROM tokens WHERE `username`='" + username + "'");
        System.out.println(result.getFetchSize());

Ответы (1 шт):

Автор решения: Barmaley

getFetchSize() не возвращает общее количество записей в ResultSet, он возвращает количество полученных/прочитанных записей (надеюсь понимаете разницу).

fetch - это что-то вроде кэширования, чтобы не дергать каждый раз БД. Результат возвращается в виде блоков, например JDBC от Oracle по умолчанию сразу читаются 10 записей. Размер fetch можно менять, например через setFetchSize()

Чтобы получить количество записей надо немного по другому:

result.last(); //позиционируемся на последнюю запись
int resultCount = result.getRow(); //количество записей
→ Ссылка