Преобразовать ResultSet в строку - PullRequest
0 голосов
/ 31 мая 2018

У меня есть метод, который подключается и загружает базу данных.Он сохраняет все имена пользователей с оценками в ResultSet.На данный момент я могу заставить его печатать отдельно на консоли построчно.Как я могу сохранить весь ResultSet в строку, чтобы я мог распечатать его в 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: ");

, чтобы отобразить полный список оценок

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

Нет ничего проще, чем это.Используйте 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();

Но: вы спрашивали Google, прежде чем задать этот вопрос?

0 голосов
/ 31 мая 2018

внутри 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]);
    }
}

Или вы можете использовать StringBuilder, как предложено @Alex GS

0 голосов
/ 31 мая 2018

Вы можете вернуть строку в 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();

Затем вам нужно будет позвонить loadDatabase() до view.getInstructions().setText("Scores: "); и добавить его к этому setText.

...