Как использовать 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 ответ
Я вижу здесь две вещи, которые вы можете попробовать:
Вы можете проверить, возвращают ли все ваши запросы хотя бы одну строку. Может быть, есть идентификатор, который вы передаете в запрос, который не проверяет предложение WHERE ни для одного из результатов. Вы можете проверить это, сделав звонок
next
в условном выражении типаif(idresultSet.next()) id = idResultSet.getString("id");
Кроме того, возможно, вам следует попытаться поместить курсор в первую строку (просто чтобы убедиться) после выполнения запроса. подобно
ResultSet idResultSet = outid.executeQuery(); idResultSet.first(); idResultSet.next();