Java opencsv创建空csv

Java opencsv创建空csv,java,csv,opencsv,Java,Csv,Opencsv,我需要将任何数据库的结果集转换为csv,而不仅仅是postgres 当我使用opencsv时,正在创建空的csv文件 以下是servlet中doGet方法的代码: final String JDBC_DRIVER = "org.postgresql.Driver"; final String DB_URL = "jdbc:postgresql://localhost:5432/postgres"; // Database credentials final S

我需要将任何数据库的结果集转换为csv,而不仅仅是postgres

当我使用opencsv时,正在创建空的csv文件

以下是servlet中doGet方法的代码:

    final String JDBC_DRIVER = "org.postgresql.Driver";
    final String DB_URL = "jdbc:postgresql://localhost:5432/postgres";

    //  Database credentials
    final String USER = "postgres";
    final String PASS = "12345";

    response.setContentType("text/html");

    PrintWriter out = response.getWriter();

    String title = "Database Result";
    String docType =
            "<!doctype html public \"-//w3c//dtd html 4.0 " +
                    "transitional//en\">\n";
    out.println(docType +
            "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor=\"#f0f0f0\">\n" +
            "<h1 align=\"center\">" + title + "</h1>\n");

    PreparedStatement ps = null;
    Connection conn = null;

    try {
        // Register JDBC driver
        Class.forName("org.postgresql.Driver");

        // Open a connection
        conn = DriverManager.getConnection(DB_URL, USER, PASS);

        // Execute SQL query
        //stmt = conn.createStatement();
        String sql = "SELECT * FROM users";

        ps = conn.prepareStatement(sql,
                ResultSet.TYPE_SCROLL_SENSITIVE,
                ResultSet.CONCUR_UPDATABLE);

        ResultSet rs = ps.executeQuery();

        /*if(rs.next()){
            System.out.println("Name = "+rs.getString("first_name"));
        }*/ //prints name so rs is not empty

        //rs.first();
        CSVWriter writer = new CSVWriter(new FileWriter("Test.csv"));
        //even tried with seperator '\t' or ','
        writer.writeAll(rs, true);
        writer.close();
        out.println("</body></html>");

        // Clean-up environment
        rs.close();
        ps.close();
        conn.close();
        } catch (SQLException se) {
            //Handle errors for JDBC
            se.printStackTrace();
        } catch (Exception e) {
            //Handle errors for Class.forName
            e.printStackTrace();
        } finally {
            //finally block used to close resources
            try {
                if (ps != null)
                    ps.close();
            } catch (SQLException se2) {
            }// nothing we can do
            try {
                if (conn != null)
                    conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }//end finally try
        } //end try
不确定是什么错误。尝试了不同的方式,但csv始终为空


甚至尝试过writer.flush、rs.beforeFirst、rs.first都不起作用。

您的问题是在html中看不到数据-如果是这种情况,那么不在CSVWriter中创建新的FileWriter,只需传入您的输出变量即可

还是您检查了Test.csv和文件,但什么都没有?如果是,则首先检查结果集中是否存在实际数据,方法是在executeQuery之后添加以下内容:

rs.last();
long numberOfRecords = rs.getRow();
rs.beforeFirst();
System.out.println("Number of Users in table is: " + numberOfRecords);