请教大家一个问题,我进行数据库连接在JdbcUtils(单例的,没有使用数据库连接池)工具类中取得连接,第一次用完后我把conn.close(),并且conn = null(这两句代码都执行了,我debug过的),同一个application中为什么我下一次在连接的时候conn不是一个空的,还是一个关闭的呢?

解决方案 »

  1.   

    同一个application中为什么我下一次在连接的时候conn不是一个空的,还是一个关闭的呢?下一次连接的时候  就打开  连接了,然后才进行数据库操作
    不打开连接,怎么进行数据库操作呢?难道说 你的代码里 没有打开的操作??
      

  2.   

    package com.felix.mgr.util;import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;public class JdbcUtils {

    private static Connection conn = null;

    private JdbcUtils() {

    }

    static {
    try {
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection("jdbc:mysql:///shopping", "root", "root");
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } catch(SQLException e) {
    e.printStackTrace();
    }
    }

    public static Connection getConnection() {
    if(conn == null) {
    try {
    conn = DriverManager.getConnection("jdbc:mysql:///shopping", "root", "root");
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    return conn;
    } public static void close(Connection conn, Statement stmt, ResultSet rs) {
    try {
    if(rs != null) {
    rs.close();
    rs = null;
    }
    } catch(SQLException e) {
    e.printStackTrace();
    } finally {
    try {
    if(stmt != null) {
    stmt.close();
    stmt = null;
    }
    } catch(SQLException e) {
    e.printStackTrace();
    } finally {
    try {
    if(conn != null) {
    conn.close();
    conn = null;
    }
    } catch(SQLException e) {
    e.printStackTrace();
    }
    }
    }
    }
    }
      

  3.   

    我第一次操作的代码是
    conn = JdbcUtils.getConnection();
    conn.....
    //例如保存用户
    ...
    JdbcUtils.close();
    然后我刷新浏览器,在一次的进行插入的时候发现conn是一个关闭的
      

  4.   

    private static Connection conn = null;conn不是static的吗?
    所以你第二次连的时候,conn还在呀
      

  5.   

                        if(conn != null) {
                            conn.close();
                            conn = null;
                        }conn = null不会起作用,因为只是改变了函数的参数的引用,
    不会对调用的对象起作用
      

  6.   

     private static Connection conn = null;你的是static