java 停止ApacheCSV将“org.apache.commons.csv.CSVPrinter”添加到CSVPrinter的输出

mgdq6dx1  于 2023-03-21  发布在  Java
关注(0)|答案(1)|浏览(119)

我尝试将SQL查询结果更改为CSV格式,然后将其发送到API进行处理。当我使用CSVPrinter(org.apache.commons.csv.CSVPrinter)时,它总是添加:"org.apache.commons.csv.CSVPrinter@5ec70441"到输出。
我想知道这是因为我使用它的方式,还是因为它是一个标准的东西,我需要首先解析出来?
这是代码,我尝试了几种方法输出CSV,但每次都得到相同的东西。

public void ScoreTable(String tableName) throws SQLException, IOException {
    DataB db = new DataB();
    ResultSet rs;
    rs = db.executeQuery("SELECT NtNo, SchedDate, SchedTime, Duration, WC, Sequence, CBy FROM " + tableName + " ");
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
    CSVPrinter csvPrinter;
    csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT.withHeader(rs));
    csvPrinter.printRecords(rs);
    String scoreCSV = csvPrinter.toString();
    System.out.println("String contains: " + scoreCSV);
    csvPrinter.close();
    populateScore pa = new populateScore();
    String theScore = pa.getCsvScore("21", scoreCSV);
    System.out.println("API outputs : " + theScore);
}
eivnm1vs

eivnm1vs1#

您的CSVPrinter正在写入JVM进程的stdout。当所有数据都写入后,您可以向stdout添加新行:

System.out.println("String contains: " + scoreCSV);

就我理解你的代码而言,你试图通过调用它的toString方法从CSVPrinter获取结果。该方法与CSV无关,它是在java.lang.Object中定义的方法。CSVPrinter不会重写此方法。所以当然你会在输出中添加默认的Object#toString()实现。
同样,我只是猜测,也许将结果写入JVM stdout不是您想要的,但如果是,那么就不要打印CSVPrinter#toString()方法的结果。

相关问题