0

我从数据库中检索数据并通过一个数组循环它以显示类似的数量。

        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。在此先感谢。

4

3 回答 3

5

(顺便说一句,它从不返回任何东西——你已经发布了一个void方法。)

看看这段代码:

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

您刚刚创建了一个new ArrayList<Integer>,因此它的大小为 0。因此,循环总是立即完成,而无需执行主体。

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

于 2013-02-02T15:54:51.117 回答
2

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

于 2013-02-02T15:55:21.850 回答
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));
}

您可能不需要我相信的数组列表,因为您仅在结果集的迭代期间获取值并将其求和。

于 2013-02-02T16:18:35.913 回答