简体   繁体   English

将查询中的 BIT 作为 Prepared Statement 中的参数传递

[英]Passing BIT in query as a parameter in Prepared Statement

I want to pass a bit as one of the parameters in Prepared Statement.我想传递一点作为 Prepared Statement 中的参数之一。 My query should look like this:我的查询应该是这样的:

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

I am framing the query as:我将查询构造为:

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

However, this throws an error.但是,这会引发错误。

Can someone explain how I can pass 0::BIT from the prepare statement without it appending the single quote by itself and getting converted to String?有人可以解释我如何从准备语句中传递 0::BIT 而不用它自己附加单引号并转换为字符串吗?

Write the prepared statement so that the cast is part of the query:编写准备好的语句,以便强制转换成为查询的一部分:

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

That is necessary, because you can only pass a constant value to the prepared statement, not an SQL expression.这是必要的,因为您只能将常量值传递给准备好的语句,而不是 SQL 表达式。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM