5

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

谢谢

4

2 回答 2

4

如果您想在 where 子句中添加可变数量的条件,请使用 StringBuilder(如果是多线程环境,则为 StringBuffer),并且运行时间取决于您的条件连接/附加到您的字符串。

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


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

然后通过将其转换为字符串来使用此查询创建准备好的语句

PrepareStatement(query.toString());
于 2012-09-30T10:55:22.883 回答
3

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

所以每次你想运行一个查询时,你需要构建字符串来创建 PreparedStatement,检查你是否在地图中有它(并重用它)或者创建一个新的,然后将它添加到地图中。

于 2012-09-30T10:47:23.573 回答