Q: Java, JDBC. SELECT с переменной и цикл Использую Java, JDBC, PreparedStatement. Необходимо селектнуть из базы данных 1 запись. Но только когда она появится, момент появления записи в базе данных от 1сек до 30. То есть мне нужен цикл. Понимаю как это алгоритмически выглядит. Но в силу слабого знания синтаксиса Java, JDBC не могу организовать данный цикл. Вижу это так, организовываю подключение, пишу селект, если запрос вернул ноль, то продолжаю селектить, до момента пока не вернется значение, после значение асертом проверить уже смогу конечно. Решать цикл либо через true / false либо 1 - 0. Просьба к знатокам помочь в решении.
import java.sql.*;

class Test1 {

    public static void main (String[] args) {
        try {
            String url = "jdbc:msql://10.10.10.10:1114";
            Connection conn = DriverManager.getConnection(url,"","");
            Statement stmt = conn.createStatement();
            ResultSet rs;

            rs = stmt.executeQuery("SELECT ID FROM TABLE");
            while ( rs.next() ) {
                String numID = rs.getString("ID");
                System.out.println(numID);
            }
            conn.close();
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}


A: как посоветовал @Mikhail Vaysman, вам нужно проверять на наличие результата, и как только они появляются - выполнить ваш код. 
Это можно делать разными способами, например, получить count таблицы и проверять, что оно не 0. Но я бы порекомендовал вам другой способ: 
так как вы работаете с недавно возвращенным ResultSet, курсор которого указывает перед первой строкой, проще всего проверить на наличие данных, просто вызвая isBeforeFirst(). Это позволяет избежать необходимости вернуться назад, если данные должны быть прочитаны.
из документации:

Returns: true if the cursor is before the first row; false if the
  cursor is at any other position or the result set contains no rows

Как поясняется в документации, оно возвращает false, если курсор не находится перед первой записью или если в ResultSet нет строк.
Таким образом верен код
if (!rs.isBeforeFirst() ) {    
    System.out.println("Нет данных"); 
} 

