Java 我的程序中是否需要Stmt.close()

Java 我的程序中是否需要Stmt.close(),java,sql,Java,Sql,我想知道 1.java中语句结束的目的 2.如果我没有在程序中提供stmt.close(),会发生什么 try{ Statement DelQTY=OPConnect.createStatement(); Statement DelPMQTY=OPConnect.createStatement(); Statement DelPReq = OPConnect.createStatement(); Statement DelPro=OPConnect

我想知道

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() 捕获(SQLE异常) { e、 printStackTrace();
}你的意思是
java.sql.Statement

它释放由该语句绑定的jdbc和db资源。如果你不这样做,它的垃圾收集,这是那么做。但是我会自己做,因为这可能会引发一个我想自己处理的异常。

你是说
java.sql.Statement

它释放由该语句绑定的jdbc和db资源。如果你不这样做,它的垃圾收集,这是那么做。但是我会自己做,因为这可能会引发一个我想自己处理的异常。

假设您谈论的是SQL语句

关闭() 立即释放此语句对象的数据库和JDBC资源,而不是等待它自动关闭时发生这种情况


摘自

假设您谈论的是SQL语句

关闭() 立即释放此语句对象的数据库和JDBC资源,而不是等待它自动关闭时发生这种情况

取自

立即释放此语句对象的数据库和JDBC资源,而不是等待它自动关闭时发生这种情况。通常情况下,最好在使用完资源后立即释放资源,以避免占用数据库资源。 对已关闭的语句对象调用close方法无效

注意:语句对象在被垃圾收集时会自动关闭。关闭语句对象时,其当前ResultSet对象(如果存在)也将关闭

立即释放此语句对象的数据库和JDBC资源,而不是等待它自动关闭时发生这种情况。通常情况下,最好在使用完资源后立即释放资源,以避免占用数据库资源。 对已关闭的语句对象调用close方法无效

注意:语句对象在被垃圾收集时会自动关闭。关闭语句对象时,其当前ResultSet对象(如果存在)也将关闭


虽然有时可以通过调用close()不关闭语句,但如果在循环中执行语句,则会遇到麻烦

通常的服务器端错误是在这种情况下“打开的游标太多”。
您将在客户机中看到这是一个SQLException。

虽然有时可以通过调用close()不关闭语句,但如果在循环中执行语句,您将遇到麻烦

通常的服务器端错误是在这种情况下“打开的游标太多”。
您将在客户端中将其视为SQLException。

如果我关闭resultset,则stmt对象也将关闭?@Mohan No。释放与语句对象关联的资源的唯一方法是调用close()如果我关闭resultset,那么stmt对象也将关闭?@Mohan No。释放与语句对象关联的资源的唯一方法是对其调用close()。