sql >> Databáze >  >> RDS >> PostgreSQL

Vložení připraveného příkazu do databáze - PSQL

Š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ýsledkem ResultSet 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?




  1. Nastavení a údržba replikace PostgreSQL pomocí Ansible

  2. Spojte řetězec a číslo v MySQL

  3. Python REST API s Flask, Connexion a SQLAlchemy – část 3

  4. 5 velmi častých chyb návrhu SQL dotazů, kterým se za každou cenu vyhnout