每新开一个statement或preparedstatement,前面的就会自动关闭。

解决方案 »

  1.   

    如果新开一个Statement就关闭先前一个的话,那么象下面的stmt和ps是不是即意味着新开了ps,就会自动关闭stmt呢?如果是这样的话,下面的语句是不应可以继续执行的,意味在第二次执行stmt的时候,其实stmt已经关掉了,但是我试验过这样是可以的。这又怎么解释呢?Statement stmt = conn.createStatement();
    stmt.execute("start transaction");
    try{
    PreparedStatement ps = null;
    ps = conn.PrepareStaement("Insert into table values(?,?)");
    ps.setString(1,"sdfd");
    ps.setString(2,"fsd");
    ps.executeUpdate();
    //请问在这里要不要加一句ps.close()语句呢??
    ps=Conn.PrepareStatement("Insert into table values(?,?,?)");
    ps.setString
    ……
    ps.executeUpdate();
    stmt.execute("commit");
    }catch(Exception){
    stmt.execute("rollback");
    }
      

  2.   

    个人认为,后面的statement会覆盖前面的,所以statement在使用过程中不用关闭,最后关闭一次即可.