如何在java数据库查询中使用不等于运算符?

时间:2013-07-10 06:56:08

标签: java database jsf java-ee

我在托管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&lt;&gt;?”。但是,当我添加这个不起作用。我认为我的不平等操作员存在问题。我搜索了它的使用方法,看到了和我一样的用法。我也试过“!=”但也没用。我正在使用MySQL数据库。有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:2)

由于您使用了错误的参数索引,因此无效。 它应该是:

    checkDB.setString(1, (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("age"));
    checkDB.setString(2, (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("color"));

答案 1 :(得分:1)

    checkDB.setString(1, (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("color"));

应该是:

    checkDB.setString(2, (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("color"));