ArrayList保持返回0

时间:2013-02-02 15:52:59

标签: java sql arraylist

我从数据库中检索数据并通过数组循环显示相同的数量。

        public void SetUpLikeAmount() {
    int likes = 0;
    ArrayList <Integer> likeArray = new ArrayList <Integer>();
    for (int count = 0; count < likeArray.size();count++){
    // Set Up Database Source
    db.setUp("IT Innovation Project");
    String sql = "Select likeDislike_likes from forumLikeDislike WHERE topic_id = "
            + topicId + "";
    ResultSet resultSet = null;
    // Call readRequest to get the result
    resultSet = db.readRequest(sql);
    try {
        while (resultSet.next()) {
            likeArray.add(Integer.parseInt(resultSet.getString("likeDislike_likes")));
            likes += likeArray.get(count);
        }
        resultSet.close();
    } catch (Exception e) {
        System.out.println(e);
    }

    }
    jLabel_like.setText(Integer.toString(likes));
}

然而,它一直返回0.提前感谢。

3 个答案:

答案 0 :(得分:5)

(顺便说一下,它永远不会返回任何东西 - 你发布了void方法。)

看看这段代码:

ArrayList <Integer> likeArray = new ArrayList <Integer>();
for (int count = 0; count < likeArray.size();count++){
    ...
}

你刚刚创建了一个 new ArrayList<Integer>,因此它的大小为0.因此,循环总是立即完成,而不会执行正文。

如果您尝试从其他地方创建的列表中获取输入,则应该将其传递给您的方法。 (您还应该使用带有参数的PreparedStatement,而不是直接在SQL中包含该值。)

答案 1 :(得分:2)

您正在遍历空列表likeArray。所以它不会进入循环

答案 2 :(得分:0)

可能在这里是您应该参考的新代码:

public void SetUpLikeAmount() {
     int likes = 0;
    // Set Up Database Source
    db.setUp("IT Innovation Project");
    String sql = "Select likeDislike_likes from forumLikeDislike WHERE topic_id = "
            + topicId + "";
    ResultSet resultSet = null;
    // Call readRequest to get the result
    resultSet = db.readRequest(sql);
    try {
        while (resultSet.next()) {
            likes += Integer.parseInt(resultSet.getString("likeDislike_likes"));
        }
        resultSet.close();
    } catch (Exception e) {
        System.out.println(e);
    }

    jLabel_like.setText(Integer.toString(likes));
}

您可能不需要我相信的arraylist,因为您只是在结果集的迭代过程中获取值并将其求和。