2017-06-05 15 views
0

標題說明了一切。這是我的ResultSet代碼:無法獲得SQL結果寫入文件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(); 
     } 
    } 

這是我將writeToFile方法:

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(); 
    } 
} 

我用盡通常的沖洗和close方法,但缺少的東西。應該向其他人宣佈編寫文件嗎?

+0

沒有例外的代碼。一行被寫入,但ID不正確。你知道更好的方法嗎? –

+0

您是否可以使用調試器(或日誌記錄)來查看是否正在填充名稱,countryCode等變量(或者編寫一個測試用例傳入這些參數的硬編碼值)? – John

回答

2

嘗試打開文件,附加選項

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

在任何平臺上增加新的線路(如Linux)的使用一般的行分隔符,如下

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

這工作的意義,我的文件現在填補。任何想法爲每個查詢創建新行? –

+0

更新爲每個查詢的新行,請接受答案,如果它的工作 – user7294900

-1

您正在打開一個新的FileWriter每個迭代你的ResultSet。默認情況下,FileWriter在文件的開頭處寫入。所以你不斷覆蓋你在前一次迭代中寫入文件的內容。

此外,我建議不要在每次迭代時創建一個新的FileWriter。我只打開一次FileWriter,並在所有餐廳中使用同一個。

然後,使用BufferedWriter而不是純FileWriter。它會更快。

另外,關閉作家在finally塊中,而不是在try。從Java 7開始,你甚至可以使用try-with-resources。

最後,使用br.newLine();來寫一個新行,而不是自己管理「\ n」。

請檢查下面

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(); 
    } 
}