首页 > 解决方案 > 如何让我的布尔值返回真值?因为它一直返回 false

问题描述

我正在使用三层架构。在 servlet 中,在使用方法之前,我必须检查我的 DAO 层中的布尔值是真还是假。如果为假,则转到第一种方法,如果为真,则转到第二种方法。

我不知道出了什么问题,但它一直返回错误的。所以我坚持使用一种方法,即使我想要另一种方法。下面是我的 DAO 层:

public static RPHS getRph(RPHS rph)  {
        rph_id = rph.getRph_id();

        String searchQuery = "select * from rphs where rph_id='" + rph_id + "'";

        try {
            currentCon = ConnectionManager.getConnection();
            stmt = currentCon.createStatement();
            rs = stmt.executeQuery(searchQuery);
            boolean more = rs.next();

            // if rph exists set the isValid variable to true
            if (more) {
                int rph_id = rs.getInt("rph_id");
                rph.setRph_id(rph_id);
                rph.setValid(true);
            }

            else if (!more) {
                rph.setValid(false);
            }

        }
}

如何让它返回值 true?我的查询有问题吗?

标签: javaboolean

解决方案


你应该使用PreparedStatement而不是Statement,也使用动态查询,比如..

String searchQuery = "select * from rphs where rph_id=?";

并将值传递给 ? 标记。

Ex. stmt.setInt(1,101);

在 ResultSet 使用结果后 -

if (rs.next())
{
   int rph_id = rs.getInt("rph_id");
   rph.setRph_id(rph_id);
   rph.setValid(true);
}else {
        rph.setValid(false);
}

推荐阅读