我将 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 驱动程序中的查询解析器之后,这个片段似乎表明无法转义该?
字符。剩下的问题是:
- JDBC 规范中是否有任何内容允许
?
转义 a 并且是参数占位符以外的任何内容? - 除了使用将变量手动插入查询字符串的普通语句之外,还有什么更好的解决方法吗?