0

我尝试为论坛线程做类似的计数器。这是我的代码:

点击喜欢按钮时,它会将值插入数据库。

public void submitLike(ActionEvent e) {
    int count = 0;
    int newCount = count + 1;
    eForumLikeDislike amount = new eForumLikeDislike(userName,topicId,newCount);
    amount.likeCounter();
}

SQL statement我在点击时插入的那个。

 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")));
        }
        resultSet.close();
    } catch (Exception e) {
        System.out.println(e);
    }
    likes += likeArray.get(count);
    }
    jLabel_like.setText(Integer.toString(likes));
}

我尝试显示某个线程的总喜欢的方法。

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()) {
                likes = 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

2 回答 2

1

如果您能够更改数据库设计,请这样做。具体来说,从表 forumLikeDislike 中删除字段 likeDislike_likes。

一旦你完成了(或者即使你没有),你可以替换这个查询,

Select likeDislike_likes 
from forumLikeDislike 
WHERE topic_id = the topicId variable you submit

使用此查询:

select count(*) likes
from forumLikeDislike 
WHERE topic_id = the topicId variable you submit

它将返回一行您想要的答案。

于 2013-02-02T14:49:21.303 回答
0

我不是 100% 确定这些点,因为我还没有尝试过代码,但我的想法是让您检查其中的一些代码:

  1. 获取数据

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

您的 likeArray 大小始终从零开始。所以,这意味着计数已经小于 0,因此我认为它甚至没有进入循环......你检查过吗?

  1. 你为什么这么做:

    int count = 0;
    int newCount = count + 1;
    eForumLikeDislike amount = new eForumLikeDislike(userName,topicId,newCount);
    amount.likeCounter();
    

您的 newCount 将始终为 1。您可以避免 count = 0; newCount = count + 1 并且直接有一行说

    eForumLikeDislike amount = new eForumLikeDislike(userName,topicId, 1);

或者,也许您应该获得 eForumLikeDislike,然后使用 addLike() 方法使用用户名和 topicId 将其递增 1。

希望有帮助。干杯

于 2013-02-02T14:55:51.077 回答