时间:2021-07-01 10:21:17 帮助过:16人阅读
获得一条连接
1 //返回从连接池中获取一条连接 2 public static Connection getconn() 3 { 4 Connection conn=null; 5 try { 6 conn=dataSource.getConnection(); 7 } catch (SQLException e) { 8 // TODO Auto-generated catch block 9 e.printStackTrace(); 10 } 11 return conn; 12 }
事物实现案例
1 //获取当前对象 2 public static Connection getCurrentConn() 3 { 4 Connection conn=t.get(); 5 if(conn==null) 6 { 7 conn=getconn(); 8 t.set(conn); 9 } 10 return conn; 11 } 12 13 //开启事物 14 public static void start() 15 { 16 try { 17 getCurrentConn().setAutoCommit(false); 18 } catch (SQLException e) { 19 // TODO Auto-generated catch block 20 e.printStackTrace(); 21 } 22 } 23 24 //回滚事物 25 public static void rollback() 26 { 27 try { 28 getCurrentConn().rollback(); 29 } catch (SQLException e) { 30 // TODO Auto-generated catch block 31 e.printStackTrace(); 32 } 33 } 34 35 //提交事务 36 public static void commit() 37 { 38 try { 39 getCurrentConn().commit(); 40 } catch (SQLException e) { 41 // TODO Auto-generated catch block 42 e.printStackTrace(); 43 } 44 }
说明:在dao层获取Conn对象时使用此类的,getCurrentConn();静态方法
或者使用连接池QueryRunner qr=new QueryRunner(MyDBUtils.getDataSource());在此构造函数中传参
事物的使用:使用事物必须在dao层使用getCurrentConn();静态方法获取conn对象
例子:事物的使用位置
1 public void transfer(String out,String in,double money) 2 { 3 try { 4 //开始事物 5 MyDBUtils.start(); 6 accountDao.jianMoney(out, money);//调用到层方法 7 accountDao.jiaMoney(in, money); 8 } catch (SQLException e) { 9 // TODO Auto-generated catch block 10 //回滚 11 MyDBUtils.rollback(); 12 e.printStackTrace(); 13 }finally{ 14 //提交事务 15 MyDBUtils.commit(); 16 } 17 18 }
DBCP连接池和事物
标签:dao cdata 说明 构造函数 adl basic 代码 函数 例子