我的查询出了什么问题??完全没有错误

时间:2019-05-31 06:33:16

标签: java sql

我在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。

2 个答案:

答案 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);
    }