我在解决这个问题时遇到了麻烦:/。当我运行我的项目时,我遇到错误代码:没有为参数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
答案 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)