Špatně jste pochopili návratovou hodnotu PreparedStatement#execute()
.
Přečtěte si prosím pozorně javadoc:
Vrátí:
true
pokud je prvním výsledkemResultSet
objekt;false
pokud je prvním výsledkem počet aktualizací nebo neexistuje žádný výsledek.
Vrací tedy – jak se plně očekává – false
na INSERT
dotaz. Vrací pouze true
na SELECT
dotaz (pro který byste však obvykle chtěli použít executeQuery()
místo toho vrací přímo ResultSet
).
Pokud vás zajímají dotčené řádky, použijte raději PreparedStatement#executeUpdate()
namísto. Vrací int
podle javadoc:
Vrátí:
buď (1) počet řádků pro příkazy SQL Data Manipulation Language (DML), nebo (2) 0 pro příkazy SQL, které nic nevrací
Návratová hodnota 1 nebo vyšší by pak znamenala úspěšné vložení.
Nesouvisí ke konkrétnímu problému:váš kód uniká prostředky DB. Pečlivě si přečtěte Jak často by měly být v JDBC uzavřeny Connection, Statement a ResultSet?