我想知道
1.在java中关闭语句的目的
2.如果我没有在我的程序中提供stmt.close(),将会发生什么?
try{
Statement DelQTY=OPConnect.createStatement();
Statement DelPMQTY=OPConnect.createStatement();
Statement DelPReq = OPConnect.createStatement();
Statement DelPro=OPConnect.createStatement();
Statement DelPPro=OPConnect.createStatement();
String DelSql="DELETE FROM ITEM_REQUIRES_MAT WHERE ITEM_NO=6364;
String DelPM="DELETE FROM PROGRAM_MATERIAL WHERE ITEM_NO=6364;
String DelPReqPro="DELETE FROM PROGRAM_REQ_PRODUCE_MAT WHERE ITEM_NO=6364;
String DelProcess="DELETE FROM PROCESS_TRANSFORMS_MAT WHERE ITEM_NO=6364;
String DelPProcess="DELETE FROM PROGRAM_PROCESS_TRANSFORMS_MAT WHERE ITEM_NO=6364;
DelPReq.executeUpdate(DelPReqPro);
DelQTY.executeUpdate(DelSql);
DelPMQTY.executeUpdate(DelPM);
DelPro.executeUpdate(DelProcess);
DelPPro.executeUpdate(DelPProcess);
DelQTY.close();
DelPMQTY.close();
DelPReq.close();
DelPro.close();
OPConnect.close();
}
这是我的示例代码,我错过了DelPPro.close() catch(SQLException e) { e.printStackTrace(); }
答案 0 :(得分:1)
你的意思是java.sql.Statement
?
它释放由该语句绑定的jdbc和db资源。如果你不这样做并且收集了垃圾,那么就完成了。但我会自己这样做,因为这可能会引发一个我想自己处理的异常。
答案 1 :(得分:1)
立即释放此Statement对象的数据库和JDBC资源,而不是等待它自动关闭时发生。通常,最好在完成资源后立即释放资源,以避免占用数据库资源。 在已关闭的Statement对象上调用close方法无效。
注意:Statement对象在垃圾回收时会自动关闭。关闭Statement对象时,其当前ResultSet对象(如果存在)也将关闭。
答案 2 :(得分:1)
虽然你有时可以通过调用 close()来避免关闭语句,但如果语句执行是在循环中完成的话,你将遇到麻烦。
通常的服务器端错误在这种情况下是“太多打开游标”。 您将在客户端中将此视为SQLException。
答案 3 :(得分:0)