在preparedStatement中使用可变数量的参数

时间:2012-09-30 10:31:46

标签: java jdbc prepared-statement

我正在为我的申请创建一个搜索表单 在其中,用户选择应该用于过滤数据的字段 数字字段是可变的,所以我不知道SQL查询的where子句中应该有多少? 如何在where子句中使用preparedStatement具有可变数量的条件?

由于

2 个答案:

答案 0 :(得分:4)

如果要在where子句中添加可变数量的条件 StringBuilder(StringBuffer,如果它的多线程env。)和运行时间取决于你的条件连接/附加到你的字符串。

喜欢

StringBuilder query = new StringBuilder("Select id, name from Student ");


if(args >0)
{
    query.append(" where "); //and add more args.

稍后通过将此转换为字符串

来使用此查询创建预准备语句
PrepareStatement(query.toString());

答案 1 :(得分:3)

PrepardStatements不支持可变数量的条件。一些框架的作用是,它们将每个PreparedStatement缓存在一个Map中,其中键是查询。

因此,每次要运行查询时,都需要构建字符串以创建PreparedStatement,检查是否在地图中具有它(并重复使用)或创建新查询,并将其添加到地图中。