sql >> Database >  >> RDS >> PostgreSQL

Hoe kan ik een JSON-object in Postgres invoegen met behulp van Java PreparedStatement?

Dit gedrag is behoorlijk vervelend omdat JSON-tekenreeksen zonder problemen worden geaccepteerd wanneer ze worden gebruikt als letterlijke tekenreeksen in SQL-opdrachten.

Er is hier al een probleem voor in de Github-repository van het postgres-stuurprogramma (zelfs als het probleem de verwerking aan de serverzijde lijkt te zijn).

Naast het gebruik van een cast (zie antwoord van@a_horse_with_no_name) in de sql-tekenreeks, biedt de auteur van het nummer twee aanvullende oplossingen:

  1. Gebruik een parameter stringtype=unspecified in de JDBC-verbindings-URL/opties.

Dit vertelt PostgreSQL dat alle tekst- of varchar-parameters eigenlijk van een onbekend type zijn, waardoor het hun typen vrijer kan afleiden.

  1. Verpak de parameter in een org.postgresql.util.PGobject :

 PGobject jsonObject = new PGobject();
 jsonObject.setType("json");
 jsonObject.setValue(yourJsonString);
 pstmt.setObject(11, jsonObject);


  1. Willekeurige rijen uit de SQL Server-tabel halen - SQL Server / TSQL-zelfstudie, deel 117

  2. Herstel de mysql-database vanuit .frm-bestanden

  3. Hoe current_time werkt in PostgreSQL

  4. Hoe maak je een niet-null-beperking op een kolom in de SQL Server-tabel - SQL Server / T-SQL-zelfstudie, deel 51