2017-06-05 19 views
0

タイトルはそれをすべて言います。これは私のResultSetコードです:ファイルに書き込むためにSQL結果を得るJava

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

アイブ氏は、通常のフラッシュと密接な方法を試みたが、何かが欠けている:

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方法です。ファイルライターがelsewgereと宣言されるべきですか?

+0

例外なく以下のコードをご確認ください。 1行は書き込まれますが、不正なIDが付きます。あなたはもっと良い方法を知っていますか? –

+0

デバッガ(またはロギング)を使用して、name、countryCodeなどの変数が設定されているかどうかを確認できますか(またはこれらのパラメータにハードコードされた値を渡すテストケースを記述しますか)。 – John

答えて

2

あなたがそれぞれの新しいてFileWriterを開いている

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

これは私のファイルがいっぱいになったという意味でうまくいった。各クエリのための新しい行を作成する上の任意の考えですか? –

+0

が各クエリの新しい行に更新されている場合は、その答えを受け入れてください – user7294900

-1

以下のように一般的なラインセパレーターを使用して(例えばLinux)の任意のプラットフォームに新しい行を追加するにはappendオプション

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

でファイルを開いてみResultSetの繰り返し。デフォルトでは、FileWriterはファイルの先頭に書き込みます。したがって、以前の繰り返しでファイルに書き込んだ内容を継続的に上書きしています。

また、各繰り返しで新しいFileWriterを作成しないことをお勧めします。私はFileWriterを1回だけ開き、すべてのイテレーションで同じものを使用します。

次に、純粋なFileWriterの代わりにBufferedWriterを使用します。はるかに速くなります。

また、try内ではなくfinallyブロック内のライターを閉じます。 Java 7以降、リソースを試してみることさえできます。

最後に、「\ n」を管理する代わりにbr.newLine();を使用して新しい行を書き込んでください。

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(); 
    } 
} 
関連する問題