Стандартные библиотеки JDBC возвращают ResultSet
, который не имеет никакого представления о том, сколько в нем строк. Если ваша реализация executeSQL
не возвращает CachedRowSet (который по существу предварительно прокрутил набор результатов и загрузил все строки в память), вы никогда не узнаете количество строк, пока не достигнете конца, когда oResults.next () возвращает false.
Таким образом, ваша попытка управления потоком программ путем проверки количества строк никогда не сработает.
Далее, ваш вызов ResultSet.getRow () также, вероятно, бесполезен. Вот что говорит Javadoc:
Извлекает номер текущей строки. Первая строка - это номер 1, вторая - номер 2 и т. Д.
Примечание. Поддержка метода getRow является необязательной для ResultSets с типом набора результатов TYPE_FORWARD_ONLY
Большинство реализаций из драйверов JDBC предназначены только для пересылки (то есть вы не можете прокручивать назад с помощью метода previous () ), поэтому результат getRow()
, вероятно, бесполезен.
Вот как должен выглядеть ваш код:
ResultSet oResults = executeSQL("SELECT * FROM widgets");
while(oResults.next())
{
// Process rows
}
Если вы все еще не входите в цикл while, это означает, что ваш запрос не возвращает строк - другого объяснения нет. Если получение строк не является «невозможным», то я предлагаю вам проверить параметры подключения, чтобы убедиться, что вы подключаетесь к правильной базе данных (а не к localhost, например).