Пустой 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 шт):
getFetchSize() не возвращает общее количество записей в ResultSet, он возвращает количество полученных/прочитанных записей (надеюсь понимаете разницу).
fetch - это что-то вроде кэширования, чтобы не дергать каждый раз БД. Результат возвращается в виде блоков, например JDBC от Oracle по умолчанию сразу читаются 10 записей. Размер fetch можно менять, например через setFetchSize()
Чтобы получить количество записей надо немного по другому:
result.last(); //позиционируемся на последнюю запись
int resultCount = result.getRow(); //количество записей