2017-05-04 4 views
-1

Ich brauche Ergebnis in csv für jede Datenbank auf konvertieren (nicht nur postgres)opencsv Schaffung leer csv

Leere CSV-Datei wird erstellt, wenn ich opencsv verwenden.

Hier ist der Code der Methode doGet im Servlet:

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 

nicht sicher, was der Fehler ist. Versucht anders, aber CSV ist immer leer.

Sogar versuchte writer.flush(), rs.beforeFirst(), rs.first() nichts funktioniert.

Antwort

0

Ist Ihr Problem, dass Sie keine Daten im HTML sehen - wenn das der Fall ist, dann statt einen neuen FileWriter im CSVWriter zu erstellen, übergeben Sie einfach Ihre Variable.

Oder ist es, dass Sie die Test.csv und Datei überprüft und nichts ist da? Ist dies der Fall, prüfen Sie zuerst, ob tatsächlich Daten in der Ergebnismenge vorhanden sind, indem Sie nach executeQuery Folgendes hinzufügen:

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