PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Wstawianie przygotowanego zestawienia do bazy danych - PSQL

Źle zrozumiałeś wartość zwracaną przez PreparedStatement#execute() .

Proszę uważnie przeczytać javadoc:

Zwroty:

true jeśli pierwszym wynikiem jest ResultSet obiekt; false jeśli pierwszy wynik to liczba aktualizacji lub nie ma wyniku.

W ten sposób zwraca — jak w pełni oczekiwano — false na INSERT zapytanie. Zwraca tylko true na SELECT zapytanie (dla którego zazwyczaj chciałbyś użyć executeQuery() zamiast tego zwraca bezpośrednio ResultSet ).

Jeśli interesują Cię wiersze, których dotyczy problem, użyj PreparedStatement#executeUpdate() zamiast. Zwraca int zgodnie z javadoc:

Zwroty:

(1) liczba wierszy dla instrukcji SQL Data Manipulation Language (DML) lub (2) 0 dla instrukcji SQL, które nic nie zwracają

Zwrócona wartość 1 lub większa wskazywałaby wtedy na pomyślne wstawienie.

Niezwiązane do konkretnego problemu:Twój kod przecieka zasoby bazy danych. Przeczytaj uważnie Jak często połączenie, zestawienie i zestaw wyników powinny być zamykane w JDBC?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przegląd buforowania zapytań PostgreSQL i równoważenia obciążenia

  2. Czy w Postgresie możesz ustawić domyślne formatowanie znacznika czasu, według sesji czy globalnie?

  3. Czy istnieje spadek wydajności przy użyciu dziesiętnych typów danych (MySQL / Postgres)

  4. AMD, Intel i PostgreSQL

  5. PGError:ERROR:agregacje niedozwolone w klauzuli WHERE w zapytaniu AR obiektu i jego obiektów has_many