2017-08-12 59 views
0

prepareStatement和resultset已經在頁面頂部聲明。顯示循環到TextArea時所有變量值的問題

我想顯示所有基於我的SQL到textarea的值,但只有最後一個值出現。如果(res.next())也不起作用 - 只顯示一個值。

我只得到我的while循環的最後一個值,所以我如何顯示我的所有值...可能有一個循環?

btnSearch.addActionListener((ActionEvent ae) -> { 
    if (ae.getSource().equals(btnSearch)) { 

    String get_username = friend_username_txtf.getText(); 

    DB_connection db_connection = new DB_connection(); 

    try{ 

     String req = "SELECT su.status_update_msg, su.status_timestamp " 
      + "FROM status_update_tb as su " 
      + "INNER JOIN user_profile as up ON su.user_id = up.user_id " 
      + "WHERE up.username=? "; 

     preStatement = db_connection.connect().prepareStatement(req); 
     preStatement.setString(1, get_username); 
     res = preStatement.executeQuery(); 

     while(res.next()){ 

     String status_update_time = res.getString("status_timestamp"); 
     stats_status_txta.setText(status_update_time); 

     String friend_status = res.getString("status_update_msg"); 
     stats_status_txta.setText(friend_status); 

          } 

        } catch(SQLException | NullPointerException ex){ 

         System.out.println(ex.getMessage()); 

        } finally { 
         db_connection.disconnect(); 
        } 
      } 
     }); 

我只收到最後一個值而不是所有的值。

+0

您正在使用'stats_status_txta.setText'兩次。 –

+0

您的意思是將2個值顯示在同一個文本區 –

回答

0

檢查JTextComponent.setText(String)文件:它會覆蓋任何現有的值!

嘗試使用stats_status_txta.setText(stats_status_txta.getText() + status_update_time + "\t");stats_status_txta.setText(stats_status_txta.getText() + friend_status + "\n");

+0

您的意思是在我的while循環中...將嘗試它並讓您知道 –

+0

當然是! –

0

這裏是你的初始化邏輯問題:

while(res.next()){ 

    String status_update_time = res.getString("status_timestamp"); 
    stats_status_txta.setText(status_update_time); 

    String friend_status = res.getString("status_update_msg"); 
    stats_status_txta.setText(friend_status); 

    } 

要設置唯一的結果的最後一個值textarea的設置字符串,請初始化textarea的與不同的變量是這樣的while循環:

stats_status_txta = new TextArea(""); 
stats_status_txta.setText(status_update_time); 

如果你想在同一文本區域中的數據,那麼你可以在每個行之後用新行轉義字符「\ n」,這樣的事情:

stats_status_txta.setText(status_update_time+"\n"); 

<br/>也將在一些窗口建設者的工作

stats_status_txta.setText(status_update_time+"<br/>");