2013-02-02 55 views
0

我嘗試爲論壇主題做類似的計數器。這是我的代碼:像數組列表中的計數器保持返回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.有什麼問題嗎?我該如何解決它?
在此先感謝。

回答

1

如果您能夠更改數據庫設計,請這樣做。具體來說,從表forumLikeDislike中刪除類似Dislike_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 

它會返回一個行與回答你想要的。

+0

所以你不需要數組列表? – Rauryn

+0

不是隻有一個值你不知道。 –

+0

@DanBarcuk它說計數(*)缺少運算符喜歡 – Rauryn

0

我不是100%確定這些點,因爲我還沒有嘗試過的代碼,但這裏是我的想法,讓你檢查一些這些代碼:

  1. 獲取數據

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

你likeArray大小總是從零開始。所以,這意味着count已經小於0,因爲我認爲它甚至沒有進入循環......你檢查過了嗎?

  1. 你爲什麼這樣做:

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

你newCount將永遠是1.您可以避開計數= 0; newCount =計數+ 1,只是有一個直接這行

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

也許你應該得到的eForumLikeDislike,然後有一個由1名和topicId增加它的addLike()方法。

希望有所幫助。 乾杯

+0

1.雅。但是我從數據庫獲取數據並將其存儲到變量中。達到後,我用這個變量來總結arrayList的總數。謝謝。我剛纔也想到了這一點。 – Rauryn

+0

我已經修改了我的代碼。我意識到我從不將項添加到arrayList。但它仍然返回0 – Rauryn

+0

你好?我很緊急。你能回覆嗎? – Rauryn