【问题标题】:Why ResultSet returning 0 value after execution?为什么 ResultSet 执行后返回 0 值?
【发布时间】:2017-08-10 10:14:08
【问题描述】:

我想我是太累了还是什么..这里看不出有什么不好的。

        String select = "SELECT project_id FROM project WHERE project_key = ?";

    PreparedStatement preparedStatement1 = con.prepareStatement(select);
    preparedStatement1.setString(1, project_key);
    ResultSet rs = preparedStatement1.executeQuery();

    int project_id = 0;

    while(rs.next()) {
            project_id = rs.getInt("project_id");
    }
    System.out.println(project_id);

问题是为什么 project_id 返回我 0?

附:在数据库中,我确实完全插入了我的项目表,是的,我仔细检查了被询问的值。

【问题讨论】:

  • 循环中要处理的最后一条记录的project_id 值为零。
  • 你为什么要做setString?通常键是整数。 setInt 会更合适。
  • 单步调试 IDE 中内置的调试器中的代码。使用调试器是首先要做的事情,而不是最后要做的事情。而在 SO 上发布则接近列表的末尾。顺便说一句,while 是错误的控制结构。它可以工作,但它是从 single 行中检索值的错误结构。 if 是处理单行时的正确结构。
  • 确保你的while循环被执行了。
  • 或者第一次调用rs.next()返回false或者最后一次调用rs.getInt("project_id");返回0

标签: java mysql


【解决方案1】:

把代码改成

while(rs.next()) {
       int project_id = rs.getInt("project_id");
        System.out.println(project_id);
}

我猜你不会看到任何值(如果 project_key 有问题)

或者很多值最后一个为零!

【讨论】:

    【解决方案2】:

    试试下面的代码,看看结果集是否返回任何值

    rs.first();
    System.out.println(rs.getInt("project_id"));
    

    如果您没有看到任何值,则表示问题与查询有关。没有返回任何内容并且集合为空。 (我正要评论这个,但我没有足够的声誉)

    【讨论】:

    • 为什么这个答案被拒绝了两次,而它是公认的答案?
    • 我没有投反对票,但它可以被认为是错误的。因为它可以抛出异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    相关资源
    最近更新 更多