0

我正在我的托管 bean 中进行查询。这是代码:

 try {
        PreparedStatement checkDB = (PreparedStatement) con.prepareStatement("SELECT * FROM boats where age= ? and color <> ?");
        checkDB.setString(1, (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("age"));
        checkDB.setString(1, (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("color"));
        ResultSet res=(ResultSet) checkDB.executeQuery();
        return res;
    } catch (Exception e) {
        return null;
    }

我确信这个查询没有条件“color <>?”。但是当我添加这不起作用。我认为我的不等于运算符存在问题。我搜索了它的使用方式,并看到了与我相同的用法。我也试过“!=”但也没有用。我正在使用 MySQL 数据库。任何人都可以帮忙吗?

谢谢

4

2 回答 2

2

它不起作用,因为您使用了错误的参数索引。它应该是:

    checkDB.setString(1, (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("age"));
    checkDB.setString(2, (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("color"));
于 2013-07-10T06:59:09.507 回答
1
    checkDB.setString(1, (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("color"));

应该:

    checkDB.setString(2, (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("color"));
于 2013-07-10T06:59:24.447 回答