将结果集转换为字符串



我有一个连接和加载数据库的方法。它将所有带有分数的用户名保存到结果集中。目前,我只能让它逐行单独打印到控制台。如何将整个结果集保存到字符串中,以便将其打印到 JTextField 中?

型号类别:

public static void loadDatabase() {
try {
getDb().connectDB();
getDb().createDB();
ResultSet rs = getDb().getScores();
while (rs.next()) {
System.out.print("Username: "+rs.getString(1));
System.out.println(" Score: "+rs.getString(2));
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}

控制器类:

public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == view.getSubmitButton()) {
Model.getDb().insertScores(view.getUsernameTextField().getText(), Model.getScore()); //insert scores into table
view.getInstructions().setText("Scores: ");
}
}

getInstructions(( 是一个 JTextArea。我想要这一行:

view.getInstructions().setText("Scores: ");

显示完整的分数列表

您可以在loadDatabase()中返回一个字符串,其中包含所需的文本:

public static String loadDatabase()

在内部,您只需将这些结果保存到字符串中,而不是打印到控制台:

StringBuilder resultText = new StringBuilder();
while (rs.next()) {
resultText.append("Username: ").append(rs.getString(1)).append(" Score: ").append(rs.getString(2));
}
return resultText.toString();

然后,您需要在view.getInstructions().setText("Scores: ");之前调用loadDatabase()并将其添加到该setText中。

没有比这更简单的了。使用 StringBuilder 在迭代时连接您的字符串:

final StringBuilder builder = new StringBuilder();
while( rs.next() ) {
builder
.append("Username: ").append( rs.getString(1) )
.append( "Score: " ).append( rs.toString(2) )
;
}
String allResults = builder.toString();

但是:在问这个问题之前,你问过谷歌吗?

loadDatabase()里面

:而不是

while (rs.next()) {
System.out.print("Username: "+rs.getString(1));
System.out.println(" Score: "+rs.getString(2));
}

您应该输入:

String[] arrayofScores = null;
while (rs.next()) {
String score= rs.getString(2);
arrayofScores = score.split("n");
for (int i =0; i < arr.length; i++){
System.out.println(arrayofScores [i]);
}
}

或者你可以按照GS的建议使用StringBuilder@Alex

相关内容

  • 没有找到相关文章

最新更新