JDBC Prepared-Anweisungsparameter in json

9

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:

%Vor%

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

    
mohamnag 24.05.2016, 20:05
quelle

1 Antwort

7

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.

    
mohamnag 30.05.2016, 08:48
quelle

Tags und Links