首页 > 解决方案 > 将查询中的 BIT 作为 Prepared Statement 中的参数传递

问题描述

我想传递一点作为 Prepared Statement 中的参数之一。我的查询应该是这样的:

query = select * from tbl_security_details('user',O::BIT)

我将查询构建为:

query = select * from tbl_security_details(?,?)
PreparedStatement ps = connection.prepareStatement(query);
ps.setString(1,"user")
ps.setString(2,"0::BIT")

但是,这会引发错误。

有人可以解释我如何从 prepare 语句中传递 0::BIT ,而不用它自己附加单引号并转换为 String 吗?

标签: javapostgresqljdbcprepared-statement

解决方案


编写准备好的语句,以便强制转换成为查询的一部分:

String query = "select * from tbl_security_details(?, ?::bit)";
java.sql.PreparedStatement ps = connection.prepareStatement(query);
ps.setString(1, "user");
ps.setString(2, "0");

这是必要的,因为您只能将常量值传递给准备好的语句,而不是 SQL 表达式。


推荐阅读