问题描述
我写了一个类 封装了MySQL数据库的连接方法,一个是用类方法实现,一个是用对象方法实现,如下:public static Connection getConn() throws Exception{Connection conn=null;try{Class.forName(strDataDriverName);} catch (ClassNotFoundException e) {// TODO: handle exceptionthrow new Exception(e);}try {conn=DriverManager.getConnection(strDataURL,strDataUserName,strDataPWD);} catch (SQLException e) {// TODO: handle exceptionthrow new Exception(e);}return conn;}//public Connection getConnection() throws Exception {Connection conn=null;try{Class.forName(strDataDriverName);} catch (ClassNotFoundException e) {// TODO: handle exceptionthrow new Exception(e);}try {conn=DriverManager.getConnection(strDataURL,strDataUserName,strDataPWD);} catch (SQLException e) {// TODO: handle exceptionthrow new Exception(e);}return conn;}这两个方法都没有关闭conn, 因为要返回conn, 我想问下 如果在外部声明一个 conn=类.getConn 后 然后关闭conn 是不是接可以了也就同样的关闭了类.getConn中的conn,主要是 这两个conn对象是不是一个?如果用下面的对象.getConnection, 疑惑同上!! 问题补充:ljjclub 写道
解决方案
比如你在这个类里写的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(); 就行了
解决方案二:
怎么会关闭俩个conn呢,什么意思
解决方案三:
在你这个工具类里面写上关闭方法public static void close(Connection conn) {if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}然后在哪调用连接就在哪关闭
解决方案四:
应该不是同一个!