import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.Test;
//并发懒汉式单例类实现jdbc工具类
public final class JDBCUtil {
private static String url = "jdbc:mysql://localhost:3306/jdbc";
private static String user = "root";
private static String password = "";
//延时加载
private static JDBCUtil instance = null;
//非延时加载
//注意事项
/**
* 如果选择了非延时加载,那么单例类中的所有静态变量的声明必须放到下面语句之前,否则初始化执行了构造
* 函数后,初始化的静态变量可能会被再次赋值,违背了我们最初的意愿,该调试带来不必要的麻烦。
* 所以静态实例变量初始化时应该注意它们的初始化顺序。
*/
private static JDBCUtil instance2 = new JDBCUtil();
private JDBCUtil()
{
}
//缩小加锁粒度,防止多次访问整个加锁方法
public static JDBCUtil getInstance()
{
//懒汉式单例类,可以避免在不使用该类的时候产生实例,而只在需要的时候产生该实例
if(instance == null)
{
//进行并发控制,防止发生意外情况
synchronized(JDBCUtil.class)
{
if(instance == null)
{
instance = new JDBCUtil();
}
}
}
return instance;
}
public Connection getConnction() throws SQLException
{
return DriverManager.getConnection(url, user, password);
}
public void free(ResultSet rs,Statement st,Connection conn) throws SQLException
{
if(rs != null)
{
rs.close();
rs = null;
}
if(st != null)
{
rs.close();
rs = null;
}
if(conn != null)
{
rs.close();
rs = null;
}
}
}