相关疑难解决方法(0)

SQL准备语句如何通过多种可能的菜单选择进行选择?

所以我有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)

java sql jdbc

7
推荐指数
2
解决办法
2万
查看次数

PreparedStatement可以不考虑WHERE子句中的某些条件吗?

例如,我有一个声明

"SELECT * FROM Reports WHERE StartDate >= ? WHERE EndDate <= ? AND Performer = ?"

但有时网页上的某些输入字段没有填写,所以我不必考虑这个条件.即我没有填充开始日期,所以必须声明

"SELECT * FROM Reports WHERE EndDate <= ? AND Performer = ?"

有3种不同的条件.那么,我是否必须编写8种不同的语句和DAO方法来完成任务?真?也许有其他解决方案?

编辑:我使用MySQL /

java mysql sql dao prepared-statement

4
推荐指数
1
解决办法
1606
查看次数

标签 统计

java ×2

sql ×2

dao ×1

jdbc ×1

mysql ×1

prepared-statement ×1