1 回答

TA貢獻1963條經驗 獲得超6個贊
由于您沒有關閉它們,語句和結果集資源可能尚未釋放,并保留在內存中。
while(rs.next())
考慮在循環后關閉它們:
rs.close(); statement.close();
請注意,您可以使用“嘗試使用資源”來讓事情自行關閉:
try (PreparedStatement statement = con1.prepareStatement(sql); ResultSet rs = statement.executeQuery())
參看。Java 7 自動資源管理 JDBC(try-with-resources 語句)
public void email() throws Exception {
String sql = "SELECT id,subject,recipient,content FROM emailqueue WHERE status='Pending' ";
while (true) {
try (PreparedStatement statement = con1.prepareStatement(sql); ResultSet rs = statement.executeQuery()) {
while (rs.next()) {
String subject = rs.getString("subject");
String recipient = rs.getString("recipient");
String content = rs.getString("content");
String id = rs.getString("id");
sendEmail(recipient, subject, content, id);
}
} catch (Exception e) {
e.printStackTrace();
}
}
con1.close();
Thread.sleep(2000);
}
添加回答
舉報