我尝试将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);
}
1条答案
按热度按时间eivnm1vs1#
您的
CSVPrinter
正在写入JVM进程的stdout。当所有数据都写入后,您可以向stdout添加新行:就我理解你的代码而言,你试图通过调用它的
toString
方法从CSVPrinter获取结果。该方法与CSV无关,它是在java.lang.Object
中定义的方法。CSVPrinter不会重写此方法。所以当然你会在输出中添加默认的Object#toString()
实现。同样,我只是猜测,也许将结果写入JVM stdout不是您想要的,但如果是,那么就不要打印
CSVPrinter#toString()
方法的结果。