java中的SQLException:没有为参数2指定值

时间:2015-03-15 10:59:18

标签: java mysql

我在解决这个问题时遇到了麻烦:/。当我运行我的项目时,我遇到错误代码:没有为参数2指定值,即使应填写所有参数。

public Field geefVeld(int x, int y, String spelname, int spelbordnr) {
    Field field = null;
    //connection.close();
    try (Connection connectie = DriverManager.getConnection(Connectie.JDBC_URL)) {
        PreparedStatement query = connectie.prepareStatement("SELECT symbool FROM field WHERE XCoord = ? and YCoord = ? and Spelbord_spel_Spelname = ? and Spelbord_VolgordeID = ?");
        query.setInt(1, x);
        query.setInt(2, y); 
        query.setString(3, spelname); 
        query.setInt(4, spelbordnr);

        try (ResultSet rs = query.executeQuery()) {
            field = new Field(rs.getString(3).charAt(0));
        }
    } catch (SQLException ex) {
        throw new RuntimeException(ex);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }

    return field;
}    

调试时我可以看到x = 0,y = 0,spelname =“Soraka”,spelbordnr = 1(这一切都很好,因为这些值在我的数据库中存在)

项目停在“query.setInt(2,y);”在调试时。

如果我忽略了一些愚蠢的事情,我就会倾诉,但我一直在寻找几个小时,我似乎无法找到它:(

欢迎任何回复:p

2 个答案:

答案 0 :(得分:1)

您没有在几个方面正确检索结果集。首先,您需要使用next()方法来获取结果中的行。其次,您正在调用getString(3),其中您的结果集中只有一列(symbol)。第三,不要忘记关闭结果集。最后,你写try的方式有些奇怪。

try {
    ResultSet rs = query.executeQuery();
    while(rs.next()) {
         field = new Field(rs.getString(1).charAt(0));
    }
    rs.close();
}

我不知道这是否会解决参数设置问题,但值得一试。

答案 1 :(得分:0)

对于响应的Thx,显然代码没有任何问题(或者可能仍然存在并且我不知道它:/),但是NetBeans存在问题。 "干净的构建"函数由于某种原因没有真正起作用,所以我需要手动删除构建(我希望我有意义:p)