gpt4 book ai didi

postgresql - 转义 hstore 包含 JDBC 准备语句中的运算符

转载 作者:行者123 更新时间:2023-11-29 11:19:39 26 4
gpt4 key购买 nike

我正在将 PostgreSQL 9.1.4 与 hstore 和 PostgreSQL JDBC 一起使用驱动程序 (9.1-901.jdbc4)。

我正在尝试在 PreparedStatement 中使用包含运算符(??&?|),但是 ? 字符被解析为变量占位符。是否可以转义此字符以在查询中发送正确的运算符?

一个例子:

PreparedStatement stmt = conn.prepareStatement("SELECT a, b FROM table1 WHERE c ? 'foo' AND d = ?");
stmt.setInt(1, dValue);
stmt.executeQuery();

在这种形式下,以下示例将引发异常:

org.postgresql.util.PSQLException: No value specified for parameter 2.

更新:

调查 pgjdbc 驱动程序中的查询解析器后 this snippet似乎表明无法转义 ? 字符。剩下的问题是:

  • JDBC 规范中是否有任何内容允许对 ? 进行转义并使其成为参数占位符以外的任何内容?
  • 对于这个问题,有没有比使用纯语句和手动插入查询字符串的变量更好的解决方法?

最佳答案

实际上,java SQL 解析器似乎不兼容 hstore。

但是由于语法 c ? 'foo' 等同于 exist(c, 'foo'),你可以轻松解决这个问题。查看下一页以了解 hstore 的详细运算符是什么。

Postgres hstore documentation

关于postgresql - 转义 hstore 包含 JDBC 准备语句中的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11940401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com