rs.next () возвращает false в операторе while - PullRequest
0 голосов
/ 28 июня 2018

Итак, я пытаюсь извлечь значения msgID и msgStatus из базы данных для каждого ссылочного идентификатора ( переменная msgRefList ), хранящегося в объекте списка, и пытаюсь сохранить эти извлеченные значения в объектах String для дальнейшая обработка. Но метод rs.next () возвращает false и, следовательно, не входит в цикл while, где находятся операторы присваивания. Я проверил в базе данных запрос, который я использую в коде, и он показывает одну запись в результате, но все же rs.next () возвращает false. Снимок экрана с приложением базы данных.

Ниже приведен код, который я использую

List<String> msgRefList = listofRefrnceValues:

try {
    Connection connect = connectToDB(ENV);

    for(String reference: msgRefList){

            String query="select ID, MSG_STS from TABLE where INSTR_ID = ?";
            PreparedStatement stmt = connect.prepareStatement(query);
            stmt.setString(1,reference);
            ResultSet rs = stmt.executeQuery();
            if(rs!=null){

               while(rs.next()) {

                    P_MID = rs.getString("P_MID");
                    P_MSG_STS = rs.getString("P_MSG_STS");
               }

            }
        }
    }catch (Exception e) {
        e.printStackTrace();
    }

Database Result

1 Ответ

0 голосов
/ 28 июня 2018

В SQL-Query-String в Java есть некоторые опечатки. Вместо TABLE вы, вероятно, имели в виду MINF (ваша реальная таблица), и все ваши свойства не имеют префикса P_, а ID, вероятно, MID. Так что поменяйте:

String query="select ID, MSG_STS from TABLE where INSTR_ID = ?";

Кому:

String query="select P_MID, P_MSG_STS from MINF where P_INSTR_ID = ?";

И все будет хорошо.

...