2013-12-09 49 views
0

我正在讀取Oracle數據庫中的blob數據&將其寫入文本文件。我的數據庫中有兩列名爲Number &系統。我的桌子上有100道菜。但只有最後一行是寫在我的文本行中。下面是我試過的代碼。使用blob數據寫入文件

rs =stmt.executeQuery("select Number, system from system"); 
Blob lob = null; 


while (rs.next()) { 
    String RECID = rs.getString(1); 
    System.out.println("Number"+ Number); 

    lob=rs.getBlob("system"); 
    byte[] bdata = lob.getBytes(1, (int) lob.length()); 
    String text = new String(bdata); 
    System.out.println("text"+ text); 

    System.out.println("rs value"+ lob); 
    String test=null; 
    test=RECID+":"+text; 
    FileOutputStream fos = new FileOutputStream("C:/DataRead/system.txt"); 
    DataOutputStream dos = new DataOutputStream(fos); 
    dos.writeBytes(test); 

    dos.close(); 
} 
} 
catch (Exception e) { 
    e.printStackTrace(); 
} 

} 
} 

在文本文件中,我只獲得第100條記錄,其他99行沒有寫入。

+0

重新打開在每次迭代的輸出文件,肯定清除以前的版本。 –

+0

謝謝亞歷克西斯,請教如何打開每個迭代的輸出文件 – user2742540

回答

0

您正在每次在while循環中替換現有文本。

試試這個:

FileOutputStream fos = new FileOutputStream("C:/DataRead/system.txt"); 
DataOutputStream dos = new DataOutputStream(fos); 
while (rs.next()) { 
    String RECID = rs.getString(1); 
    System.out.println("Number"+ Number); 
    lob=rs.getBlob("system"); 
    byte[] bdata = lob.getBytes(1, (int) lob.length()); 
    String text = new String(bdata); 
    System.out.println("text"+ text); 

    System.out.println("rs value"+ lob); 
    String test=null; 
    test=RECID+":"+text; 

    dos.writeBytes(test+"\n"); 
} 
dos.close(); 
+0

謝謝Bhushan,但所有的數據都寫在一行。如何在每行之後啓用\ n – user2742540

+0

@ user2742540您可以使用'\ n'作爲新行。我已編輯相應的代碼。 – Bhushan

+0

@ user2742540不客氣。如果解決了您的問題,您可以接受答案。 – Bhushan

0

替換行代碼中的

FileOutputStream fos = new FileOutputStream("C:/DataRead/system.txt"); 

有了:

FileOutputStream fos = new FileOutputStream("C:/DataRead/system.txt", true);