2017-06-05 5 views
0

Der Titel sagt alles. Das ist mein ResultSet Code:Kann keine SQL-Ergebnisse zum Schreiben in Datei Java

try { 
    while (rs.next()) { 
     int ID = rs.getInt("ID"); 
     String Name = rs.getString("Name"); 
     String CountryCode = rs.getString("CountryCode"); 
     String District = rs.getString("District"); 
     int Population = rs.getInt("Population"); 

     //Display values 
     try { 
      writeToFile(ID, Name, CountryCode, District, Population); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

Das ist mein writeToFile Methode:

public void writeToFile(int id, String name, String countryCode, String district, int population) throws IOException { 
    FileWriter fw = new FileWriter("C:\\Users\\horry\\Desktop\\results.txt"); 
    fw.write(id + " " + name + " " + countryCode + " " + district + " " + population + "\n"); 
    try { 
     fw.flush(); 
     fw.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

Ive versucht, die üblichen Flush und schließen Methode aber etwas fehlt. Sollte der Dateischreiber anders genannt werden?

+0

keine Ausnahmen. Eine Zeile wird geschrieben, aber mit einer falschen ID. Kennst du eine bessere Methode? –

+0

Können Sie den Debugger (oder die Protokollierung) verwenden, um zu sehen, ob die Variablen name, countryCode usw. gefüllt sind (oder schreiben Sie einen Testfall, der fest codierte Werte für diese Parameter übergibt)? – John

Antwort

2

Versuchen zu öffnen Datei mit append Option

FileWriter fw = new FileWriter("C:\\Users\\horry\\Desktop\\results.txt", true); 

neue Linie in jeder Plattform (zB Linux) verwenden seperator allgemeine Linie hinzufügen, wie unten

fw.write(id + " " + name + " " + countryCode + " " + district + " " + population + System.getProperty("line.separator")); 
+0

Dies funktionierte in dem Sinne, dass meine Datei jetzt gefüllt ist. Irgendwelche Gedanken zum Erstellen neuer Zeilen für jede Abfrage? –

+0

aktualisiert mit neuer Zeile für jede Abfrage, akzeptieren Sie bitte die Antwort, wenn es funktioniert – user7294900

-1

Sie einen neuen Filewriter für jede Öffnung Iteration Ihres ResultSets. Standardmäßig schreibt ein FileWriter am Anfang der Datei. Sie überschreiben also fortlaufend das, was Sie in der vorherigen Iteration in die Datei geschrieben haben.

Außerdem würde ich empfehlen, nicht bei jeder Iteration einen neuen FileWriter zu erstellen. Ich würde einen FileWriter nur einmal öffnen und den gleichen für alle Einstellungen verwenden.

Verwenden Sie dann einen BufferedWriter anstelle eines reinen FileWriter. Es wird viel schneller sein.

Schließen Sie auch den Writer in einem endgültigen Block, nicht innerhalb des Versuchs. Seit Java 7 können Sie sogar Try-with-Resources verwenden.

Verwenden Sie schließlich br.newLine();, um eine neue Zeile zu schreiben, anstatt das "\ n" selbst zu verwalten.

Bitte überprüfen Sie den Code unten

File f = new File("C:\\Users\\horry\\Desktop\\results.txt"); 
try (BufferedWriter bw = new BufferedWriter(new FileWriter(f))) { 
    while (rs.next()) { 
     int id = rs.getInt("ID"); 
     String name = rs.getString("Name"); 
     String countryCode = rs.getString("CountryCode"); 
     String district = rs.getString("District"); 
     int population = rs.getInt("Population"); 
     bw.write(id + " " + name + " " + countryCode + " " + district + " " + population); 
     bw.newLine(); 
    } 
}