在我的应用程序中,我使用C代码将数据插入数据库,因为我从不可信的来源接收到的字符串,我使用libpq库的PQescapeByteaConn函数对它们进行了转义。这个方法运行得非常好,即结果是八进制格式的字符串。请看下面的例子,
输入字符串:\n\t\f\b\p\k\j\l\mestPrepared
输出字符串:\\012\\011\\014\\010pkjlmestPrepared
输出字符串被插入到数据库中。现在,我在Java代码中使用JDBC从数据库中检索这些数据。我如何将字符串还原回其原始值?
我考虑了两种可能的方法,
1. 更改数据库检索查询,并将该字段传递给Postgres的任何字符串操作函数,即可以将bytea转换为文本。 2. 在Java代码中进行解码。
我可以理解方法1会更有效率。我已经尝试了几乎所有列在here的函数,但没有任何效果。请帮忙!
我在Linux机器上使用的是Postgres的8.4版本。
输入字符串:\n\t\f\b\p\k\j\l\mestPrepared
输出字符串:\\012\\011\\014\\010pkjlmestPrepared
输出字符串被插入到数据库中。现在,我在Java代码中使用JDBC从数据库中检索这些数据。我如何将字符串还原回其原始值?
我考虑了两种可能的方法,
1. 更改数据库检索查询,并将该字段传递给Postgres的任何字符串操作函数,即可以将bytea转换为文本。 2. 在Java代码中进行解码。
我可以理解方法1会更有效率。我已经尝试了几乎所有列在here的函数,但没有任何效果。请帮忙!
我在Linux机器上使用的是Postgres的8.4版本。
ResultSet.getBytes()
有什么问题吗? - Daniel Vérité