我从数据库中检索数据并通过数组循环显示相同的数量。
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.提前感谢。
答案 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,因为您只是在结果集的迭代过程中获取值并将其求和。