Svaret finns i meddelandet - ExecuteQuery kräver en resultatuppsättning. Använd executeUpdate istället.
Från länken ovan:
-
boolesk execute() Kör SQL-satsen i det här PreparedStatement-objektet, som kan vara vilken typ av SQL-sats som helst.
-
ResultSet executeQuery() Kör SQL-frågan i detta PreparedStatement-objekt och returnerar ResultSet-objektet som genererats av frågan.
-
int executeUpdate() Kör SQL-satsen i detta PreparedStatement-objekt, som måste vara en SQL-sats INSERT, UPDATE eller DELETE; eller en SQL-sats som inte returnerar något, till exempel en DDL-sats.
det faktum att det fungerar på Oracle är förmodligen bara en bieffekt som du har upptäckt att det inte går att lita på.