嗨,大家好,我試圖打印從銷售表(Oracle)的所有交易到一個文本文件中。不幸的是,它只寫了一條記錄,而表中有許多符合條件的記錄。有人可以告訴我這是什麼問題嗎?寫一個oracle多行分貝到一個文本文件
這裏是我的代碼:
public void actionPerformed(ActionEvent ae) {
Object obj = ae.getSource();
if (obj == btnSave) {
Connection conn = null;
String receno = Lrecno.getText();
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "MUNGAI", "gatungo87");
Statement st = conn.createStatement();
String recp = "select PART_DESC, QUNTY, UNIT_SALE, TOTAL_SALE from sales where session_id = '" + receno + "'";
ResultSet rs = st.executeQuery(recp);
while (rs.next()) {
File f = new File("Sale Receipts");
f.mkdir();
BufferedWriter bw = new BufferedWriter(new FileWriter("Sale Receipts/Sale" + Lrecno.getText() + ".TXT"));
String receipt = rs.getString("PART_DESC") + " " + rs.getString("QUNTY") + " "
+ rs.getString("UNIT_SALE") + " " + rs.getString("TOTAL_SALE");
String[] rece = receipt.split("\n");
for (int i = 0; i < rece.length; i++) {
bw.write(receipt);
bw.flush();
bw.newLine();
}
JOptionPane.showMessageDialog(this, "Item sold successfully",
"Success", JOptionPane.PLAIN_MESSAGE);
}
} catch (Exception ad) {
JOptionPane.showMessageDialog(this, ad,
"Error", JOptionPane.PLAIN_MESSAGE);
}
}
除了Vikdor的回答,爲什麼要將收據字符串拆分爲「\ n」(換行符)?然後部分與新行之間?此外,很少有需要在每行之間執行bw.flush()。請記住,當你完成後關閉作家。 –