2014-03-06 58 views
0

嗨,大家好这是我得到的错误导出为CSV错误,丢失最后一行的单元格

线程“main”中的异常java.io.IOException:错误的值数量。阅读3,预计4,读取令牌[EOF],行28208

行1-28207是正确的,所有4列显示正确的数据,但最后一行的单元格D中缺少值(其中是不应该有)

这是我的查询。

PreparedStatement statement = con 
       .prepareStatement("SELECT b.id_history ,position ,id_winner, " 
         + "amt_won " 
         + "FROM first_game_results a, first_game_results_statistics b " 
         + "WHERE a.id_history = b.id_history " 
         + "AND amt_won <> 0.00 " + "AND id_winning <> 0 " 
         + "AND id_player = 1"); 

,然后打印成CSV文件,我使用

for (int i = 1; i < columnCount + 1; i++) { 
      String name = rsmd.getColumnName(i); 

      out.print(name); 

      if (i != columnCount + 1) { 
       out.print(","); 
       //System.out.print(i); 

我非常新到Java,相对来说。

任何帮助,将不胜感激

错误

+0

使用专用的CSV编写器,如[opencsv](http://opencsv.sf.net) – hd1

+0

当您写完文件后,是否刷新并关闭了文件?离开这是一个常见的错误,并可能导致文件的最后一部分没有得到保存。 –

+0

是啊,有几个人告诉我,我应该使用它,干杯队友,任何想法可能会导致这个,但? – Bugz

回答

0

一个提交初学者的错误时,写入文件是忘记冲水,当写完关闭它们。这可能导致丢失文件的末尾或整个文件。

请确保您已在作者,文件等等上调用flush()close(),或者任何调用与您正在使用的工具等效。根据您的实施情况,该文件甚至可能会被其他程序打开,直到您致电close()

Flush指示它将任何东西写入缓冲区。关闭告诉你你已经完成了文件。

+0

固定,谢谢! – Bugz

相关问题