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

必要な答えを含む1行が返されます。

于 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であり、直接1行で次のようになります。

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

または、eForumLikeDislikeを取得してから、ユーザー名とtopicIdを使用して1ずつインクリメントするaddLike()メソッドを用意する必要があります。

お役に立てば幸いです。乾杯

于 2013-02-02T14:55:51.077 に答える