postgresql – 转义hstore包含JDBC Prepared语句中的运算符

前端之家收集整理的这篇文章主要介绍了postgresql – 转义hstore包含JDBC Prepared语句中的运算符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Postgresql 9.1.4与hstore和 PostgreSQL JDBC驱动程序(9.1-901.jdbc4).

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

一个例子:

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’相当于存在(c,’foo’),你可以轻松解决这个问题.看看下面的页面,看看hstore的详细运算符是什么.

Postgres hstore documentation

猜你在找的Postgre SQL相关文章