Как использовать next() внутри цикла for в Java для получения следующего набора результатов

Я хочу взять идентификатор каждого нет, которые представлены в константе массива. Пожалуйста, найдите код ниже. Когда я запускаю это, я получаю "ResultSet неправильно позиционирован, возможно, вам нужно позвонить дальше". ошибка. но 101 работает правильно. остальные значения или не получены. Пожалуйста, кто-нибудь, помогите мне

 PreparedStatement m_inoutid = null;
 docno="[101,102,103,104]";
 String minoutid[]=new String[1000];
 String documentno = docno.substring(1, docno.length() - 1);
 List<String> docnumbers = new ArrayList<String>();
 String[] split = documentno.split(",");
 StringBuilder sb = new StringBuilder();
 for (int i = 0; i < split.length; i++) {

  String sql = "select id from mytable where fid=?";

   outid = conn.prepareStatement(sql);
   String  idfromquery=split[i];
    outid.setString(1, idfromquery);
    ResultSet idResultSet = outid.executeQuery();
    idResultSet.next();

    id = idResultSet.getString("id");

   final List<Object> parameters = new ArrayList<Object>();
   parameters.add(null);
   parameters.add(id);

   myfunction(parameters);
    }

1 ответ

Я вижу здесь две вещи, которые вы можете попробовать:

  1. Вы можете проверить, возвращают ли все ваши запросы хотя бы одну строку. Может быть, есть идентификатор, который вы передаете в запрос, который не проверяет предложение WHERE ни для одного из результатов. Вы можете проверить это, сделав звонок next в условном выражении типа

    if(idresultSet.next()) id = idResultSet.getString("id");

  2. Кроме того, возможно, вам следует попытаться поместить курсор в первую строку (просто чтобы убедиться) после выполнения запроса. подобно

    ResultSet idResultSet = outid.executeQuery(); idResultSet.first(); idResultSet.next();

Другие вопросы по тегам