Ваша проблема здесь:
rs2 = pstmt.executeQuery(q2);
Вы указываете PreparedStatement
выполнить SQL q2
вместо выполнения предварительно подготовленного SQL.Это должно быть просто:
rs2 = pstmt.executeQuery();
Это довольно распространенная ошибка, вызванная, в основном, неправильным дизайном класса java.sql.Statement
и его подтипами.
Как указывает @RMT, вы делаете здесь ту же ошибку:
rs1 = pstmt.executeQuery(q1);
Это не имеет большого значения, поскольку в q1
нет заполнителей, поэтому SQL выполняетсякак есть.Однако это все еще не так.
Наконец, вам следует подумать о вызове close()
для первого PreparedStatement
, прежде чем переназначить переменную pstmt
другой.Вы рискуете получить утечку, если не сделаете этого.