所以我有4个菜单选项(产品,位置,courseType和类别),所有这些都可以为null(使用JSF编程,但这应该与此问题无关,因为它是一个SQL问题).
菜单选择将向托管bean发送用户选择的变量,并使用准备好的语句使用用户选择的菜单中的信息(如果有)搜索数据库表.
如果用户将菜单项保留为null,则应搜索所有内容.
如果用户将1或2或3个菜单项留下信息,而另一个留空,则应相应地进行搜索.
我的问题是如何在没有附加到适当的sql语句的bean中的一堆if/then语句的情况下执行此操作?
或者是否有一个更好的sql语句我可以做到这一切吗?
我在Java中使用准备好的语句.
我试过这个:
if (product != null && location != null && courseType != null && category != null) {
pstmt = conn.prepareStatement("select * FROM Courses WHERE "
+ "product = ? "
+ "and location = ? "
+ "and courseType = ? "
+ "and category = ?");
pstmt.setString(1, product);
pstmt.setString(2, location);
pstmt.setString(3, courseType);
pstmt.setString(4, category);
} else if (product == null && location != null && courseType != null && category != …Run Code Online (Sandbox Code Playgroud) 例如,我有一个声明
"SELECT * FROM Reports WHERE StartDate >= ? WHERE EndDate <= ? AND Performer = ?"
但有时网页上的某些输入字段没有填写,所以我不必考虑这个条件.即我没有填充开始日期,所以必须声明
"SELECT * FROM Reports WHERE EndDate <= ? AND Performer = ?"
有3种不同的条件.那么,我是否必须编写8种不同的语句和DAO方法来完成任务?真?也许有其他解决方案?
编辑:我使用MySQL /