while (true) {
resultset = statement.executeQuery(query);
int count = 0;
while (resultset.next()) {
count = resultset.getInt(1);
}
if (count > curId) {
System.out.println("UPDATE");
String query1 = "SELECT * FROM `db` WHERE id = " + count;
resultset = statement.executeQuery(query1);
// проверка шаг 1 или 2
// Дальше только при шаге 2
int status = 100;
String query2 = "INSERT INTO help (id, status) VALUES (" + count + ", " + status + ")";
statement.executeUpdate(query2);
curId = count;
}
String query3 = "SELECT * FROM help WHERE status = 400";
testResultset = statement.executeQuery(query3);
while (testResultset.next()) { // здесь возникает ошибка после удаления
int id = testResultset.getInt(1);
String query_delete = "DELETE FROM help WHERE id = " + id ;
statement.executeUpdate(query_delete);
}
Thread.sleep(100);
}
Цикл крутиться нормально, но после удаления одного элемента возникает ошибка
java.sql.SQLException: Operation not allowed after ResultSet closed
Проблема заключается в том, как вы извлекаете данные. Каждый раз, когда вы вызываете executeQuery, вы получаете свежий ResultSet, но вы его не закрываете.
http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html
By default, only one ResultSet object per Statement object can be open at the same time. Therefore, if the reading of one ResultSet object is interleaved with the reading of another, each must have been generated by different Statement objects. All execution methods in the Statement interface implicitly close a statment's current ResultSet object if an open one exists.
По умолчанию одновременно может быть открыт только один объект ResultSet для объекта Statement. Поэтому, если чтение одного объекта ResultSet чередуется с чтением другого, каждый из них должен быть сгенерирован различными объектами Statement. Все методы выполнения в интерфейсе Statement неявно закрывают текущий объект ResultSet, если существует открытый.
Если коротко, то у вас есть несколько ResultSet, относящихся к тому же самому объекту Statement одновременно. И вы его не закрываете.
Вы можете создать другой Statement объект для удаления записи в БД. либо же закрыть RS
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Создан класс для экспорта данных Jtable в Excel При выполнении возникает ошибка
Решил тестировать пример Google Calendar API Quickstart по этой ссылке https://developersgoogle