linkt 2011-12-13 09:11
浏览 463
已采纳

要不要关闭Connection对象,为什么

我写了一个类 封装了MySQL数据库的连接方法,一个是用类方法实现,一个是用对象方法实现,如下:
public static Connection getConn() throws Exception{
Connection conn=null;
try{
Class.forName(strDataDriverName);
} catch (ClassNotFoundException e) {
// TODO: handle exception
throw new Exception(e);
}
try {
conn=DriverManager.getConnection(strDataURL,strDataUserName,strDataPWD);
} catch (SQLException e) {
// TODO: handle exception
throw new Exception(e);
}
return conn;
}
//
public Connection getConnection() throws Exception {

    Connection conn=null;
    try{
        Class.forName(strDataDriverName);
    } catch (ClassNotFoundException e) {
        // TODO: handle exception
        throw new Exception(e);
    }
    try {
        conn=DriverManager.getConnection(strDataURL,strDataUserName,strDataPWD);
    } catch (SQLException e) {
        // TODO: handle exception
        throw new Exception(e);
    }

    return conn;
}

这两个方法都没有关闭conn, 因为要返回conn, 我想问下 如果在外部声明一个 conn=类.getConn 后 然后关闭conn 是不是接可以了也就同样的关闭了类.getConn中的conn,主要是 这两个conn对象是不是一个?
如果用下面的对象.getConnection, 疑惑同上!!

  • 写回答

4条回答 默认 最新

  • 三日过后 2011-12-13 11:19
    关注

    比如你在这个类里写的conn 和 close;
    public class DBUtil {
    public static Connection getConnection() {
    Connection conn = null;
    try {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    String dbUrl = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
    String username = "scott";
    String password = "tiger";
    conn = DriverManager.getConnection(dbUrl, username, password);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return conn;
    }

        public static void close(Connection conn) {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    

    }

    在其他类中需要连接数据库时这样
    Connection = null;
    conn = DBUtil.getConnection();
    然后
    conn.close(); 就行了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services