单例模式获取JDBC连接

Posted BradLee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式获取JDBC连接相关的知识,希望对你有一定的参考价值。

package com.jdbc.test;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
/**
 *  @author 李逸野
 * */
public class DBHelperUtil{
	//获取数据库用户名
	private static String user;
	//获取数据库密码
	private static String password;
	//获取数据库驱动
	private static String driver;
	//获取数据库URL
	private static String jdbcUrl;
	//加载文件
	private static Properties properties;
	//获取加载文件
	private static InputStream getProperties;
	//单例模式获取数据库实体
	private static DBHelperUtil etity;
	//获取连接对象
	private static Connection conn = null;
	
	//私有化
	private DBHelperUtil(){
		
	}
	//通过静态代码块加载配置文件
	static{
		properties = new Properties();
		getProperties = DBHelperUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
		try {
			properties.load(getProperties);
		} catch (IOException e) {
			e.printStackTrace();
		}
		user = properties.getProperty("user");
		password=properties.getProperty("password");
		driver=properties.getProperty("driver");
		jdbcUrl=properties.getProperty("jdbcUrl");
		etity = new DBHelperUtil();
	}
	
	//单例模式获取数据库连接
	public static  Connection createInstance() throws IOException, ClassNotFoundException, SQLException{
		if(conn == null){
			synchronized(Object.class){
				if(conn == null){
					conn = DriverManager.getConnection(jdbcUrl, user, password);
					etity.initDB();
				}
			}
		}
		return conn;
	}
	//初始化连接
	public void initDB() throws ClassNotFoundException{
		Class.forName(driver);
	}

	
	
	//关闭数据库连接
	public static void close(ResultSet resultSet,PreparedStatement perparedStatement,Connection conn) throws SQLException, IOException{
		
		if(resultSet != null){
			resultSet.close();
		}
		
		if(perparedStatement != null){
			perparedStatement.close();
		}
		
		
		if(conn != null){
			conn.close();
		}
		
		if(getProperties != null){
			getProperties.close();
		}
		
	}
}

  测试数据:

结合本人最近学习的单例模式和JDBC写出个简单的获取JDBC连接,如果有错误欢迎指教。

以上是关于单例模式获取JDBC连接的主要内容,如果未能解决你的问题,请参考以下文章

单例模式的几种实现方式

java的jdbc连接,单例连接对象还是spring jdbc连接?

1. 单例模式

单例设计模式和多例

封装jdbc 单例模式的应用

部分代码片段