Java 结果集转换为CSV?

Java 结果集转换为CSV?,java,Java,我正在使用opencsv库将oracle数据转储到csv文件中 我正在使用以下代码: private void generateCSVFile() { try { Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@localhost:1521:XE"; Connection con = DriverManager.ge

我正在使用opencsv库将oracle数据转储到csv文件中

我正在使用以下代码:

    private void generateCSVFile() {

    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        String url = "jdbc:oracle:thin:@localhost:1521:XE";
        Connection con = DriverManager.getConnection(url, "system", "admin");
        PreparedStatement ps = con.prepareStatement("select * from T_USER_DETAILS",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE,ResultSet.HOLD_CURSORS_OVER_COMMIT);
        ResultSet rs = ps.executeQuery();
        if(rs.next()){
            System.out.println("Name = "+rs.getString(2));
        }

        rs.beforeFirst();
        CSVWriter writer = new CSVWriter(new FileWriter("Test.csv"),'\t');

        writer.writeAll(rs, true);
        JOptionPane.showMessageDialog(null, "CSV Created!","Success!",JOptionPane.INFORMATION_MESSAGE);

    } catch (Exception ex) {
        Logger.getLogger(BackupDB.class.getName()).log(Level.SEVERE, null, ex);
    }

}
但是,当我执行这个代码时。已创建csv文件,但该文件中没有内容。(注意结果集在控制台中打印2列值)


提前感谢。

您可以尝试以下几种方法:

  • 将writer.close()放在try块的末尾
  • 确保结果集不是空的
  • 如果仍然不起作用,请注释sytem.out.println部分以及rs.beforeFirst()部分,然后重试
  • 如果前3步仍然失败,这是您最不想做的事情。您可以在构造函数中将结果集替换为
    列表
    ,尝试一下。如果有效,则意味着结果集存在问题

  • 你关上作家了吗?像writer.close()一样;您已经在迭代结果集以打印它,一些驱动程序不支持滚动。删除
    if(rs.next()){..}
    。谢谢,我的代码正常工作,我错过了writer.close()。现在好了。