62,614
社区成员
发帖
与我相关
我的任务
分享
public class JdbcPool {
//通过dbcp jar报得到数据库连接池,交给其他类使用
//其他类调用数据库连接池getConnection
private static DataSource ds;
/**
* 读取配置文件
*
*/
private static Properties getProp(){
InputStream inputStream = JdbcPool.class.getClassLoader().getResourceAsStream("org/sue/jdbc/util/db.properities");
Properties prop =new Properties();
try {
prop.load(inputStream);
} catch (IOException e) {
throw new RuntimeException("找不到配置文件");
}
return prop;
}
static{
try {
Properties prop = getProp();
ds=BasicDataSourceFactory.createDataSource(prop);
} catch (Exception e) {
e.printStackTrace();
}
}
public DataSource getDs(){
return ds;
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.sue.jdbc.dbcp.pool.JdbcPool;
public class Connection_Open_Close {
//实例化数据连接池
private static JdbcPool pool =new JdbcPool();
//本地线程变量
private static ThreadLocal<Connection> tLocal =new ThreadLocal<>();
//打开数据库连接
public static Connection getConnection(){
Connection conn= null;
try{
//得到conn 先从本地线程变量取
conn = tLocal.get();
//如果本地线程变量没有
if(conn == null){
//创建一个conn
conn = pool.getDs().getConnection();
//放进本地线程变量
tLocal.set(conn);
}
System.out.println(Thread.currentThread().getName()+"打开了conn"+ conn.hashCode());
} catch (Exception e) {
throw new RuntimeException("找不到文件");
}
return conn;
}
/**
* 开启事务
*/
public static void beginTransaction(){
Connection conn = null;
conn=tLocal.get();
//本地线程变量有conn
if(conn!=null){
try {
conn.setAutoCommit(false);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 提交事务
*/
public static void commitTransaction(){
Connection conn = null;
conn = tLocal.get();
//本地线程变量有conn
if(conn!=null){
try {
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//关闭其他服务
public static void closeDB(ResultSet rs,PreparedStatement ppst){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(ppst!=null){
try {
ppst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 回滚
*/
public static void rockback(){
Connection conn = null;
conn=tLocal.get();
//本地线程变量有conn
if(conn!=null){
try {
conn.rollback();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 关闭数据库连接
*/
public static void closeConn(){
Connection conn =null;
conn =tLocal.get();
//本地线程变量有conn
if(conn!=null){
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}