PreparedStatement.close() 执行后 会更新db的什么地方,
证明已经关闭了

解决方案 »

  1.   

    用PreparedStatement的时候一般不用管数据库游标,只管java提供给你的接口层面就行。数据库游标是数据库执行层面的事,关联关系都是内部的。
      

  2.   

    statement关闭之后,所对应的游标也会关闭。但是连接可以依然保持。如果你只打开连接,但没打开任何语句,那么也不会打开任何游标。
      

  3.   

    白话连接池:连接池是为了提高连接数据库的速度,将打开的连接保存到池里,当有需要连接数据库时,不用重新连接,直接从池里拿出一个连接好的连接就行了。
    statement虽然是从连接对象取得的,但是关闭statement时,连接依然保持打开状态,随时准备执行其他语句。
    所以从上面的解释来看,关闭statement与连接池没有关系。
      

  4.   

    看一个JDBC的例子 Class.forName("com.mysql.jdbc.Driver");
    String url = "jdbc:mysql://localhost:3306/sampledb";
    Connection conn = DriverManager.getConnection(url, "root", "root");
    Statement st = conn.createStatement();
    ResultSet rs = st.executeQuery("select * from worker where id = 105");
    // 在此关闭st
    st.close();
    // 再操作结果集时会报 
    // Exception in thread "main" java.sql.SQLException: Operation not allowed after ResultSet closed
    if (rs.next()) {
    System.out.println(rs.getString("Id"));
    }Statement  的关闭只会影响有它产生的rs 结果集,关闭Statement 会连带关闭ResultSet ,但不会影响数据库的连接。
    同理 PreparedStatement 的关闭,也只关闭了由他产生的结果集,不会影响到数据库连接池。