下面的语句有什么问题?
String sql = "INSERT INTO tablename (colname) VALUES ($tag$$${a{e^i\\pi}a}$$$tag$);";
Connection connection = DB.getConnection();
Statement st = connection.createStatement();
st.executeQuery(sql);
执行后,应该有一个新的row int tablename,$${a{e^i\pi}a}$$ in colname (type: text)。但我得到的只是 $${ae^i\pia}$$,这是没有大括号的预期结果。
我在 Windows 7 机器上的 Java 7.11、PostgreSQL 9.1 (x64) 中对其进行了测试。
最佳答案
只需使用准备好的语句,这样您就不会遇到未转义字符串的错误,因为 SQL 会自动为您完成。
st = conn.prepareStatement("INSERT INTO tablename (colname) VALUES (?)");
st.setString(1, "$${a{e^i\\pi}a}$$");
st.executeUpdate();
有关其他信息,您可以查看此问题的答案: Java - escape string to prevent SQL injection
关于java - 大括号在转义 SQL 语句中被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14648597/