首页 > 解决方案 > 基于复选框的搜索:动态生成带有尽可能多的“?”的预准备语句 作为选中复选框的计数

问题描述

简短:我的问题是编写一个方法,该方法生成一个准备好的语句,对应于选中的复选框的数量并填写“?”。

嘿,我有一个文本搜索来搜索相应的标题和作者,看起来像这样。

String query = "SELECT * FROM xyz WHERE title LIKE ? OR author LIKE ?";
PreparedStatement ps = con.prepareStatement(query);
ps.setString(1, "%" + searchtext + "%");
ps.setString(2, "%" + searchtext + "%");

工作得很好。我现在想实现一个基于复选框的搜索。每个数据库条目都有一个类型、主题和用例。这 3 个中的每一个都有 8-9 种可能性。

结果,我想显示所有数据库条目,其流派是选中的条目之一,其主题是选中的条目之一,其用例是选中的条目之一。

复选框

我想要的可能是例如(genre1 或genre2)和topic7 和(usecase5 或usecase9)

因为只有选中的复选框会向 servlet 返回一个值,所以我不知道如何编写适合所有可能场景的准备好的语句。我相信我需要计算有多少复选框返回一个值,获取它们的值并动态生成一个带有尽可能多的“?”的准备好的语句。作为选中复选框的数量。每个 ?必须用 ps.setString() 填充。

您会使用相同的名称将复选框分组到同一组中,还是将每个复选框单独保留?

标签: javapostgresqlprepared-statementjava-ee-6

解决方案


推荐阅读