In meiner Anwendung füge ich Daten mithilfe von C-Code in die Datenbank ein, da die Zeichenfolgen, die ich von einer nicht vertrauenswürdigen Quelle erhalte, mithilfe PQescapeByteaConn
der libpq-Bibliothek maskiert wurden. Das funktioniert einwandfrei, dh es entsteht ein String im Oktettformat. Siehe folgendes Beispiel:
Eingabezeichenfolge: \n\t\f\b\p\k\j\l\mestPrepared
Ausgabezeichenfolge: \\012\\011\\014\\010pkjlmestPrepared
Die Ausgabezeichenfolge wird in die Datenbank eingefügt. Jetzt rufe ich diese Daten aus der Datenbank in einem Java-Code mit JDBC ab. Wie kann ich die Zeichenfolge wieder auf ihren ursprünglichen Wert zurücksetzen?
Ich dachte an zwei mögliche Ansätze,
- Ändern Sie die Datenbankabrufabfrage und übergeben Sie dieses Feld an eine beliebige String-Manipulationsfunktion von Postgres, die Bytea in Text konvertieren kann.
- Führen Sie die Dekodierung im Java-Code durch.
Ich kann verstehen, dass der Ansatz 1 effizienter sein wird. Ich habe fast alle hier aufgeführten Funktionen ausprobiert , aber nichts funktioniert. Bitte helfen Sie!
Ich verwende Version 8.4 von Postgres auf einem Linux-Computer.
ResultSet.getBytes()
?