java 实现 JDBCUtil连接mysql8.0.15

本文介绍了一种使用单例模式和枚举类型来实现JDBC连接池的方法,通过这两种方式可以有效地管理和控制数据库连接资源,提高系统的性能和稳定性。详细解释了如何在Java中初始化和获取数据库连接,以及如何正确地关闭连接和相关资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.通过单例实现提供jdbc的连接和流关闭

package cn.itsource.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JDBCUtil {
	// 单例
	private JDBCUtil(){}
	private static JDBCUtil instance;
	private static Properties prop = new Properties();
	static{
		instance = new JDBCUtil();
		try {
			prop.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
			Class.forName(prop.getProperty("DriverClass"));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
	}
	public static JDBCUtil getInstacnce(){ // 提供公共可访问的方法
		return instance;
	}
	// 获取连接
	public Connection getConn(){
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(prop.getProperty("url"), prop.getProperty("username"),  prop.getProperty("password"));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}
	// 关闭连接
	public void close(Connection conn, PreparedStatement st, ResultSet rs){
			try {
				if(rs != null)
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}finally{
				try {
					if(st != null)
					st.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}finally{
					try {
						if(conn != null)
						conn.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
	}
}

2.通过枚举实现jdbc连接

package cn.itsource.util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import java.sql.ResultSet;
import java.sql.Statement;

public enum JDBCUtil {
	instance;
	static Properties p = new Properties();
	static{
		try {
			InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties");
			p.load(inputStream);
			Class.forName(p.getProperty("DriverClass"));
		} catch (Exception e) {
			// TODO: handle exception
		}	
	}
	public Connection getConn(){
		Connection connection = null;
		try {
			connection = DriverManager.getConnection(p.getProperty("url"), p.getProperty("username"), p.getProperty("password"));
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return connection;
	}
	
	public void Close(Connection conn, Statement statement, ResultSet rs){
		try {
			if (rs != null) rs.close();
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}finally {	
			try {
				if (statement != null) statement.close();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				try {
					if(conn != null) conn.close();
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值