2017-08-12 61 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/>");