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);
}
添加回答
举报