Это исключение говорит о том, в чем проблема - ваш набор результатов не поддерживает удаление. Чтобы иметь обновляемый набор результатов, необходимо выполнить следующие требования:
Когда вы готовили заявление, вы делали его с ResultSet.CONCUR_UPDATABLE?
Запрос может выбирать только из одной таблицы без каких-либо операций объединения.
В запросе должны быть выбраны все необнуляемые столбцы и все столбцы, которые не имеют значения по умолчанию. Запрос не может использовать «SELECT *». Невозможно выбрать производные столбцы или агрегаты, такие как SUM или MAX из набора столбцов.
Возможно, вы захотите переместить наборы результатов в наборы Java, прежде чем работать, делая то, что вы делаете, хотя, так как использование deleteRow фактически удалит строку из базы данных (если это не ожидаемый результат)
Есть еще одна проблема с вашим кодом. Даже если удаление сработает, ваш код завершится ошибкой на второй итерации набора результатов 1, поскольку вы никогда не сбрасываете table2ResultSet, и для второй итерации в table2resulset не будет больше результатов.
Но вдобавок ко всему этому. Зачем вам проходить через всю эту суету и получать все ненужные вам строки вместо того, чтобы делать это с помощью одного запроса вроде:
select * from table 1 where id not in select id from table 2
или
delete from table 1 where id not in select id from table 2
если это цель