Ich habe eine Tabelle, die eine Datenspalte mit einer ähnlichen Struktur wie folgt hat:
%Vor%jetzt möchte ich alle Zeilen finden, die ein Objekt mit spezifischer ID in ihrem Objektarray in Daten haben. Die folgende Abfrage funktioniert perfekt von der PSQL-Konsole:
%Vor% Ich kann dies jedoch nicht als vorbereitete Anweisung über den JDBC-Treiber ausführen. Der Wert für ID sollte ein Parameter sein, also habe ich das als String versucht, der an connection.prepareStatement(query);
übergeben wurde:
hier, wenn ich versuche, Argumente zu setzen, bekomme ich diese Ausnahme:
%Vor%Wenn ich eines der folgenden Argumente ausprobiere, ist das Argument korrekt eingestellt:
%Vor%aber das Ergebnis ist offensichtlich keine richtig formatierte Abfrage:
%Vor%In beiden Fällen bekomme ich folgende Ausnahme:
%Vor%Was ist die korrekte Syntax, um einen Parameter in JSON zu setzen? Ich benutze PostgreSQL 9.5
Ich habe JDBC-Entwickler tatsächlich über Github angesprochen und nach einigen Diskussionen scheint dies die derzeit beste Lösung zu sein ist die vorbereitete Aussage wie folgt zu haben:
%Vor%und übergeben Sie die gesamten Suchkriterien als mit einem String versehenes JSON-Objekt für den Parameter:
%Vor%Das ist keine perfekte Lösung, scheint aber aufgrund fehlender Serverfähigkeiten das bestmögliche zu sein. Am Ende ist es nicht so schlimm, da (theoretisch) kein Risiko einer SQL-Injektion besteht.
Weitere Details zum verknüpften Github-Problem.
Tags und Links java postgresql jdbc