Dans mon application, j'insère des données dans la base de données en utilisant du code C, puisque les chaînes que je reçois d'une source non fiable, je les ai échappées en utilisant la PQescapeByteaConn
bibliothèque libpq. Ce qui fonctionne parfaitement bien, c'est-à-dire les résultats au format octet String. Voir l'exemple ci-dessous,
Chaîne d'entrée: \n\t\f\b\p\k\j\l\mestPrepared
Chaîne de sortie: \\012\\011\\014\\010pkjlmestPrepared
La chaîne de sortie est insérée dans la base de données. Maintenant, je récupère ces données de la base de données dans un code java à l'aide de JDBC. Comment récupérer la chaîne à sa valeur d'origine?
J'ai pensé à deux approches possibles,
- Modifiez la requête de récupération de la base de données et passez ce champ à n'importe quelle fonction de manipulation de chaîne de postgres, c'est-à-dire qui peut convertir les bytea en texte.
- Faites le décodage en code Java.
Je peux comprendre que l'approche 1 sera plus efficace. J'ai essayé presque toutes les fonctions énumérées ici mais rien ne fonctionne. S'il vous plaît, aidez !!
J'utilise la version 8.4 de postgres sur une machine Linux.
ResultSet.getBytes()
?