代码之家  ›  专栏  ›  技术社区  ›  Caiz22

将结果集转换为字符串

  •  0
  • Caiz22  · 技术社区  · 6 年前

    我有一个连接并加载数据库的方法。它将所有带有分数的用户名保存到结果集中。目前,我只能让它单独打印到控制台逐行。如何将整个结果集保存为字符串以便将其打印到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 回复  |  直到 6 年前
        1
  •  2
  •   Alex GS    6 年前

    你可以返回一个字符串 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: "); 把它添加到那个settext。

        2
  •  0
  •   hiddenAlpha    6 年前

    再简单不过了。使用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();
    

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

        3
  •  -2
  •   Abed Rawas    6 年前

    里面 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]);
        }
    }
    

    或者可以按照@alex gs的建议使用stringbuilder