package com.ard.utils.jdbc;
|
|
/**
|
* @Description:
|
* @ClassName: GetConn
|
* @Author: 刘苏义
|
* @Date: 2023年09月19日13:12:38
|
**/
|
|
import org.springframework.core.io.ClassPathResource;
|
|
import javax.annotation.Resource;
|
import java.sql.*;
|
import java.util.Properties;
|
|
public class Conn {
|
//jdbc连接需要用到的三个参数
|
private String url="jdbc:oracle:thin:@//112.98.126.2:21521/orcl";
|
private String user="c##ard_user";
|
private String pwd="123456";
|
|
//创建一个对象 设置为静态私有 (单例模式)
|
private static Conn gc=null;
|
|
//将构造函数设为private型 防止外部实例化对象 (通过反射或反序列化可以破解单例)
|
private Conn(){};
|
|
//静态代码块,在类加载进内存时就完成对对象的特殊的初始化(这个动作发生在类的构造器执行之前,也就是在没有对象存在的情况下,静态代码就已经完成了对对象的特殊的处理 ),此处的作用是,当jdbc的驱动器加载时,就自动创建一个自己。
|
static{
|
try {
|
//注册驱动
|
Class.forName("oracle.jdbc.driver.OracleDriver");
|
} catch (ClassNotFoundException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
}
|
|
//判断GetConn实例化的对象是否存在 不存在就实例化一个
|
//synchronized 线程锁 防止多个线程抢占资源 防止死锁
|
public static Conn getGc(){
|
if(gc==null){
|
synchronized (Conn.class) {
|
if(gc==null){
|
gc=new Conn();
|
}
|
}
|
}
|
return gc;
|
}
|
|
//返回一个Connection连接
|
public Connection getCon() throws SQLException{
|
return DriverManager.getConnection(url, user, pwd);
|
}
|
//释放资源
|
public void closeAll(ResultSet rs, Statement st, Connection con){
|
if(rs!=null){
|
try {
|
rs.close();
|
} catch (SQLException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}finally{
|
if(st!=null){
|
try {
|
st.close();
|
} catch (SQLException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}finally{
|
if(con!=null){
|
try {
|
con.close();
|
} catch (SQLException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
}
|
}
|
if(st!=null){
|
try {
|
st.close();
|
} catch (SQLException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}finally{
|
if(con!=null){
|
try {
|
con.close();
|
} catch (SQLException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
}
|
|
}
|