java - 大括号在转义 SQL 语句中被删除

标签 java sql postgresql escaping

下面的语句有什么问题?

        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/

相关文章:

mysql - sql 缓存干扰了我进行查询优化的尝试

sql - 在 Access 中连接记录和 GROUP BY

django - 无法从 OSX 终端应用程序创建 postgres 数据库

java - 高效的模 3 运算?

java - +是如何在Java中实现的?

sql - 使用列名创建表(中间有空格)

java - 无法 Autowiring 数据源

java - android中是否有模型更改监听器机制

java - 如何在不改变Y坐标的情况下设置X坐标中的鼠标位置

postgresql - 获取所有程序的、用户定义的函数