我在Java中的SQL查询有问题。正如您在下面看到的那样,该查询应该返回rph_id,但它仅返回0,因此它仅继续进行else方法。
起初,我没有使用prepareStatement,但是许多建议我使用prepareStatement。但这仍然行不通。在检查了两个建议之后,我认为我的问题出在查询上,但是我不知道是什么。
grep -m1 'Version[\s\S]*?(\d[\s\S]+?)\n' *.txt
grep -m1 'Version[\s\S]*?(\d[\s\S]+?)\n' *.txt
它应该返回一个现有的ID,而不是0。
答案 0 :(得分:2)
这里:
if (rs.next()) {
rs.getInt("rph_id");
rph.setRph_id(rph_id);
rph.setValid(true);
您从结果集rs
中获得一个值,然后将该结果丢弃。
可能您意思是这样的:
rph_id = rs.getInt("rph_id");
另一方面,您请求的条目具有rph_id == 1,因此我看不到您希望在这里找到1
之外的其他值。您最有可能希望查看结果集的其他部分,并以某种方式将其拉入某个对象的变量/字段中。
似乎 好像OP根本不熟悉使用ResultSet一样,因此我认为真正的答案是:去阅读有关该主题的不错的tutorial。您无法通过反复试验来学习如何使用新的API。阅读其文档,或者一个很好的教程,向您展示如何正确使用它!
答案 1 :(得分:1)
我认为您应该在sql中使用COUNT,因为如果它已经正确就没有必要设置id了,并且还要使用作为参数提供给对象的id作为方法的一致性。
public static RPHS getRph(RPHS rph) {
try {
currentCon = ConnectionManager.getConnection();
ps=currentCon.prepareStatement("select COUNT(*) from rphs where rph_id=?");
ps.setInt(1, rph.getRph_id);
ResultSet rs = ps.executeQuery();
int count = 0;
if (rs.next()) {
count = rs.getInt(1);
}
rph.setValid(count == 1);
}