Сначала вы должны использовать инструкцию next
.
ResultSet set = statement.executeQuery();
if (set.next()) {
userName = set.getString(1);
//your logic...
}
UPDATE
Как говорится в документации по Java 6
Курсор ResultSet первоначально располагается перед первой строкой; первый вызов метода next делает первую строку текущей строкой; второй вызов делает вторую строку текущей строкой и так далее.
blockquote>Это означает, что при выполнении предложения
ResultSet set = statement.executeQuery();
ResultSet
set
будет создан и указывается на строку перед первым результатом данных. Вы можете посмотреть его следующим образом:SELECT email, firstname FROM registrationinformation
email | firstname ____________________________________ 0 <= set points to here 1 email1@gmail.com | Email1 Person 2 foo@bar.com | Foo Bar
Итак, после открытия ResulSet вы выполняете метод
next
, чтобы перенести его на первый row.if(set.next())
Теперь
set
выглядит следующим образом.email | firstname ____________________________________ 0 1 email1@gmail.com | Email1 Person <= set points to here 2 foo@bar.com | Foo Bar
Если вам нужно прочитать все данные в ResultSet, вы должны использовать while вместо if :
while(set.next()) { //read data from the actual row //automatically will try to forward 1 row }
Если
set.next()
возвращает false, это означает, что не было строки для чтения, поэтому ваш цикл while будет завершен.Дополнительная информация здесь .