У меня есть хранимая процедура, которая создает временную таблицу и заполняет таблицу temp. После заселения он возвращает строки внутри таблицы с помощью (SELECT
).Нет ResultSet из хранимой процедуры с временной таблицей с JDBC
При работе с Workbench MySQL работает чрезвычайно, но в JAVA с JDBC ResultSet пуст. Я прошел через некоторые должности, которые говорят, что мы не должны использовать PreparedStatment
, но даже Statement
не работает.
Для теста я разделил работу в Хранилище. Теперь я звоню
CallableStatement ps = connection.prepareCall("{CALL myProcedure(?)}");
ps.setString(1, "value");
ps.execute();
, который создает временную таблицу и заполняет ее. После этого с таким же соединением я стараюсь делать
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM tmp_table");
Still ResultSet пуст. Что я могу сделать? Любая помощь приветствуется.
Какая у вас настройка связи? Может быть, они не совершены? – zencv
Мое предположение, так как оно работает на рабочем столе, было бы связано с транзакциями, попробуйте добавить транзакцию к вашему java-коду. Может быть, временная таблица отбрасывается после завершения транзакции, а ваши коды не используют транзакцию при вызове хранимой процедуры. – Bhaskar
Это пул соединений в ресурсах tomcat с auto-commit = true; Я пробовал транссировать и фиксировать в процедуре MySQL. но я могу попробовать и в java. –