首页 > 解决方案 > 我的查询有什么问题??它完全没有错误

问题描述

我在 Java 中的 sql 查询有问题。正如您在下面看到的,查询应该返回 rph_id 但它只返回 0,所以它只继续执行 else 方法。

起初,我没有使用 prepareStatement,但很多人建议我使用 prepareStatement。但它仍然行不通。在检查了这两个建议之后,我认为我的问题出在查询上,但我不知道是什么。

    public class RphDAO{
    static int rph_id;

    public static RPHS getRph(RPHS rph) {    
                    try {
                        currentCon = ConnectionManager.getConnection();
                        ps=currentCon.prepareStatement("select * from rphs where rph_id=?");

                        ps.setInt(1, rph_id);
                        ResultSet rs = ps.executeQuery();

                        if (rs.next()) {
                            rs.getInt("rph_id");
                            rph.setRph_id(rph_id);
                            rph.setValid(true);
                        } else  {
                            rph.setValid(false);
                        }
                    }
                ...
                return rph;
            }
}

它应该返回一个现有的 id,而不是 0。

标签: javasql

解决方案


这里:

if (rs.next()) {
  rs.getInt("rph_id");
  rph.setRph_id(rph_id);
  rph.setValid(true);

您从 ResultSet ... 中获取rs一个值,然后将该结果丢弃。

可能你的意思是这样的:

rph_id = rs.getInt("rph_id");

另一方面,您请求那些具有 rph_id==1 的条目,所以我看不到1您希望在这里找到的其他值。最有可能的是,您想查看该结果集的其他部分,并以某种方式将它们拉入某个对象的变量/字段中。

似乎OP 根本不熟悉使用 ResultSet,因此我认为真正的答案是:去阅读关于这个主题的教程您无法通过反复试验来学习如何使用新的 API。阅读它的文档,或者一个向您展示如何正确使用它的好教程!


推荐阅读