我正在为我的应用程序创建一个搜索表单。
在其中,用户选择应该用于过滤数据的字段。数字字段是可变的,所以我不知道SQL 查询的 where 子句中应该有
多少。
如何在 where 子句中使用可变数量的条件? ?
preparedStatement
谢谢
我正在为我的应用程序创建一个搜索表单。
在其中,用户选择应该用于过滤数据的字段。数字字段是可变的,所以我不知道SQL 查询的 where 子句中应该有
多少。
如何在 where 子句中使用可变数量的条件? ?
preparedStatement
谢谢
如果您想在 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());
PrepardStatements 不支持可变数量的条件。一些框架所做的是,它们将每个 PreparedStatement 缓存在一个 Map 中,其中键是查询。
所以每次你想运行一个查询时,你需要构建字符串来创建 PreparedStatement,检查你是否在地图中有它(并重用它)或者创建一个新的,然后将它添加到地图中。