首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将ResultSet转换为字符串

将ResultSet转换为字符串
EN

Stack Overflow用户
提问于 2018-05-31 19:29:45
回答 3查看 3.1K关注 0票数 0

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

模型类:

代码语言:javascript
复制
  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();
    }
}

控制器类:

代码语言:javascript
复制
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。我想要这句话:

代码语言:javascript
复制
    view.getInstructions().setText("Scores: ");

显示分数的完整列表

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-31 19:38:19

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

代码语言:javascript
复制
public static String loadDatabase()

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

代码语言:javascript
复制
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。

票数 2
EN

Stack Overflow用户

发布于 2018-05-31 19:41:59

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

代码语言:javascript
复制
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();

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

票数 0
EN

Stack Overflow用户

发布于 2018-05-31 19:42:42

loadDatabase()内部:

而不是

代码语言:javascript
复制
while (rs.next()) {
            System.out.print("Username: "+rs.getString(1));
            System.out.println(" Score: "+rs.getString(2));
        }

您应该放入:

代码语言:javascript
复制
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]);
    }
}

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

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50623261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档