亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

自己寫的一個未成熟的數據庫連接池(二)

2019-11-18 12:04:12
字體:
來源:轉載
供稿:網友

  /**
   * Statement的自封裝,屏蔽了getResultSet,executeQuery,getGeneratedKeys方法 返回自己的接管類
   * 目的適記錄SQl的動作和設置相應連接最后活動時間。
   * @author Liudong
   */
  
  package com.drsl.db;
  
  import java.io.*;
  import java.sql.*;
  import java.util.*;
  import java.util.Date;
  import java.lang.reflect.*;
  import sun.jdbc.odbc.*;
  public class StatementObject implements InvocationHandler{
    
    PRivate Statement stm=null;
    private  Statement stm_proxy=null;
    
    private final static String GETRESULTSET_METHOD_NAME = "getResultSet";
    private final static String EXECUTEQUERY_METHOD_NAME = "executeQuery";
    private final static String GETGENERATEDKEYS_METHOD_NAME = "getGeneratedKeys";
    
    private ResultSetObject rso=null;
  
    public StatementObject(Statement stm){
      this.stm=stm;
    }
    
    public Statement getStatement(){
      if(stm_proxy==null){
        ClassLoader classloader=stm.getClass().getClassLoader();
        Class[] interfaces = stm.getClass().getInterfaces();
        
        if(interfaces==nullinterfaces.length==0){
          interfaces = new Class[1];
          interfaces[0] = Statement.class;
        }
        
        try{
          
          stm_proxy= (Statement)Proxy.newProxyInstance(classloader,interfaces,this);
          
        }catch(NullPointerException e){
          log(e,"StatementObject getStatement()--error");
        }
        if(stm_proxy!=null)
          log("StatementObject getStatement()--sUCcess");
      }
      return stm_proxy;
    }
    
    public Object invoke(Object proxy, Method m, Object[] args)  throws Throwable
    {
      Object obj = null;
      log("StatementObject--invoke:Method: /""+m.getName()+"/"");
      
      //判定是否調用了getResultSet or executeQuery or getGeneratedKeys
      //是就截獲
      if(GETRESULTSET_METHOD_NAME.equals(m.getName())
         EXECUTEQUERY_METHOD_NAME.equals(m.getName())
           GETGENERATEDKEYS_METHOD_NAME.equals(m.getName())){
            
        ResultSet rs=(ResultSet)m.invoke(stm, args);
        
        if(rs!=null && rso==null){
          rso=new ResultSetObject(rs);
          obj=rso.getResultSet();
        }else if(rso!=null)
          obj=rso.getResultSet();
        else  
          log("StatementObject--invoke:Method: /""+m.getName()+"/"--失敗");
        
      }else{
        obj = m.invoke(stm, args);  
      }
      
      //設置最后一次訪問時間,以便及時清除超時的連接
      setLastaccessTime( new Date().getTime());
      return obj;
    }
    /**
    * 將文本信息寫入日志文件
    */
    private void log(String msg) {
      ConnectionManager.log(msg);
    }
    
    /**
    * 將文本信息與異常寫入日志文件
    */
    private void log(Throwable e, String msg) {
      ConnectionManager.log(e,msg);
    }
    
    //設置最后一次訪問時間
    private void setLastAccessTime(long ltime){
      ConnectionObject.setLastAccessTime(ltime);
    }
  
  }
  /////////////////////////////////////////////////////////////////////////////////
  
  
  /**
   * PreparedStatement 的自封裝,屏蔽了executeQuery方法 返回自己的接管類
   * 目的適記錄SQl的動作和設置相應連接最后活動時間。
   * @author Liudong
   */
  
  package com.drsl.db;
  
  import java.io.*;
  import java.sql.*;
  import java.util.*;
  import java.util.Date;
  import java.lang.reflect.*;
  
  public class PreparedStatementObject implements InvocationHandler{
    
    private PreparedStatement ps=null;
    private  PreparedStatement ps_proxy =null;
    
    private final static String EXECUTEQUERY_METHOD_NAME = "executeQuery";
    private ResultSetObject rso=null;
  
    
    PreparedStatementObject(PreparedStatement ps){
      this.ps=ps;
    }
    public PreparedStatement getPreparedStatement(){
      if(ps_proxy==null){
        ClassLoader classloader=ps.getClass().getClassLoader();
        Class[] interfaces = ps.getClass().getInterfaces();
        
        if(interfaces==nullinterfaces.length==0){
          interfaces = new Class[1];
          interfaces[0] = PreparedStatement.class;
        }
    
        try{
  
          ps_proxy= (PreparedStatement) Proxy.newProxyInstance(classloader,interfaces,this);
          
        }catch(NullPointerException e){
          log(e,"PreparedStatementObject getPreparedStatement()--error");
        }
        if(ps_proxy!=null)
          log("PreparedStatementObject getPreparedStatement()--success");
      }
      return ps_proxy;
    }
  
    public Object invoke(Object proxy, Method m, Object[] args)  throws Throwable
    {
      Object obj = null;
      log("PreparedStatementObject--invoke:Method: /""+m.getName()+"/"");
      
      //是否調用了executeQuery 假如是 則接管
      if(EXECUTEQUERY_METHOD_NAME.equals(m.getName())){
        
        ResultSet rs=(ResultSet)m.invoke(ps, args);
        if(rs!=null && rso==null){
          rso=new ResultSetObject(rs);
          obj=rso.getResultSet();
        }else if(rso!=null)
          obj=rso.getResultSet();
        else
          log("PreparedStatementObject--invoke:Method: /""+m.getName()+"/"--失敗");
      }else{
        obj = m.invoke(ps, args);
      }
      
      obj = m.invoke(ps, args);  
      //設置最后一次訪問時間,以便及時清除超時的連接
      setLastAccessTime( new Date().getTime());
      return obj;
    }
      /**
    * 將文本信息寫入日志文件
    */
    private void log(String msg) {
      ConnectionManager.log(msg);
    }
    
    /**
    * 將文本信息與異常寫入日志文件
    */
    private void log(Throwable e, String msg) {
      ConnectionManager.log(e,msg);
    }
    //設置最后一次訪問時間
    private void setLastAccessTime(long ltime){
      ConnectionObject.setLastAccessTime(ltime);
    }
  }
  
  ////////////////////////////////////////////////////////////////////////
  
  /**
   * Statement的自封裝,屏蔽了getStatement方法 返回自己的接管類
   * 目的適記錄SQl的動作和設置相應連接最后活動時間。
   * @author Liudong
   */
  
  package com.drsl.db;
  
  import java.io.*;
  import java.sql.*;
  import java.util.*;
  import java.util.Date;
  import java.lang.reflect.*;
  
  public class ResultSetObject implements InvocationHandler{
    
    private ResultSet rs=null;
    private  ResultSet rs_proxy =null

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线播放日韩欧美| 亚洲国产日韩一区| 国产精品高潮视频| 亚洲国产精品福利| 91香蕉嫩草影院入口| xxxxxxxxx欧美| 欧美黄网免费在线观看| 久久久精品视频在线观看| 亚洲美女在线观看| 亚洲精品国产精品自产a区红杏吧| 日韩禁在线播放| 久久人人爽人人| 日韩国产一区三区| 日本欧美黄网站| 久久国产精品久久久| 日韩中文字幕在线视频播放| 91免费欧美精品| 国产精品视频久| 久久综合久久88| 中文字幕国产亚洲2019| 国产一区av在线| 国产精品1区2区在线观看| 精品激情国产视频| 2021久久精品国产99国产精品| 国产精品91视频| 中文字幕国产精品久久| 国产va免费精品高清在线观看| 日韩在线观看免费av| 精品成人乱色一区二区| 亚洲精品中文字幕女同| 欧美床上激情在线观看| 亚洲天堂第二页| 国产精品看片资源| 91大神福利视频在线| 26uuu亚洲伊人春色| 美女福利视频一区| 久久成人亚洲精品| 日本亚洲精品在线观看| 超碰精品一区二区三区乱码| 欧美激情视频免费观看| 91国偷自产一区二区三区的观看方式| 亚洲一区二区久久久久久久| 久久久久中文字幕| 精品美女永久免费视频| 成人黄色免费网站在线观看| 久久久女人电视剧免费播放下载| 亚洲欧洲日产国码av系列天堂| 4438全国成人免费| 91精品中文在线| 欧美电影第一页| 成人精品视频99在线观看免费| 欧美午夜丰满在线18影院| 国内精品一区二区三区| 亚洲欧美日韩爽爽影院| 精品久久香蕉国产线看观看亚洲| 精品久久久久久久久久久久| 日韩有码在线播放| 久久免费在线观看| 永久免费毛片在线播放不卡| 97超级碰碰碰久久久| 久久久精品视频在线观看| 久久久亚洲国产| 色中色综合影院手机版在线观看| 2023亚洲男人天堂| 久久亚洲电影天堂| 97在线视频国产| 最好看的2019年中文视频| 亚洲片在线观看| 一区二区三区四区在线观看视频| 97国产精品免费视频| 欧美激情在线播放| 在线国产精品播放| 欧美做爰性生交视频| 色婷婷久久av| 欧美激情在线播放| 久久韩国免费视频| 欧美大尺度激情区在线播放| 欧美日韩中文在线| 91久久国产综合久久91精品网站| 亚洲已满18点击进入在线看片| 91av免费观看91av精品在线| 午夜精品久久久久久久99热| 亚洲aⅴ日韩av电影在线观看| 亚洲成av人乱码色午夜| 91高清在线免费观看| 久久久久免费精品国产| 国产69精品99久久久久久宅男| 日韩av123| 欧美激情一区二区三区高清视频| 亚洲国产精品热久久| 亚洲免费高清视频| 成人h视频在线观看播放| 亚洲性视频网址| 午夜精品蜜臀一区二区三区免费| 国产香蕉97碰碰久久人人| 2018日韩中文字幕| 久久99久久久久久久噜噜| 一区二区福利视频| 欧美影院在线播放| 亚洲国产精品va在线看黑人| 国产欧美一区二区三区久久人妖| 国产精品亚洲自拍| 91人成网站www| 欧美激情视频在线免费观看 欧美视频免费一| 欧美成人精品一区二区三区| 国产精品久久久av久久久| 欧美精品videosex牲欧美| 亚洲第一中文字幕| 欧美xxxx做受欧美.88| 国产精品亚洲美女av网站| 日韩成人中文字幕在线观看| 国产精品久久久久99| www.欧美精品一二三区| 国产日韩欧美成人| 超碰97人人做人人爱少妇| 91av在线影院| 欧美激情精品久久久久久免费印度| 日本精品视频在线播放| 91系列在线播放| 亚洲国产91色在线| 欧美日韩高清在线观看| 日本19禁啪啪免费观看www| 亚洲裸体xxxx| 久久久天堂国产精品女人| 亚洲人a成www在线影院| 精品视频在线导航| 2021国产精品视频| 激情成人在线视频| 欧美精品18videos性欧美| 国产在线拍揄自揄视频不卡99| 韩国欧美亚洲国产| 日韩欧美国产网站| 欧美午夜激情小视频| 日韩精品高清在线观看| 久久久欧美一区二区| 精品免费在线观看| 精品国内亚洲在观看18黄| 日韩免费电影在线观看| 欧美精品一区二区免费| 欧美有码在线观看视频| 亚洲天堂av在线免费| 成人免费高清完整版在线观看| 91精品啪aⅴ在线观看国产| 97视频人免费观看| 日本欧美在线视频| 欧美激情综合亚洲一二区| www.久久久久久.com| 亚洲国产又黄又爽女人高潮的| 国产精品美女无圣光视频| 国产香蕉97碰碰久久人人| 欧美午夜视频一区二区| 亚洲视频视频在线| 亚洲福利视频久久| 久久精品成人一区二区三区| 久久久精品国产一区二区| 国产成人精品综合久久久| 中文在线资源观看视频网站免费不卡| 精品国偷自产在线| 欧美裸体xxxx极品少妇软件| 亚洲精品二三区| 在线观看中文字幕亚洲| 成人午夜黄色影院| 日韩av成人在线观看| 亚洲成人激情在线观看|