亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dbfactory.java

?? 手寫的連接池類,實現了數據庫的連接池,提高了操作數據庫的效率.
?? JAVA
字號:
/*
 * Created on 2005-5-11
 *
 */
package com.cn.db.sqlserver;
import java.sql.*;
import java.util.*;
    /**
     * <p>Title: 數據庫訪問類 </p>
     * <p>Description: 建立數據庫MSSQL連接,執行SQL命令</p>
     * <p>Copyright:fish Copyright (c)2004</p>
     * <p>Company:com.cn</p>
     * @author fish  jerryinside@Gmail.com
     * @version 1.0 
     */
public class DbFactory extends Thread{
	static private Connection conn = null;
	static private String url;
	static private String user;
	static private String password;
	private static ResourceBundle propretites = null;
	
	private static Stack pool=new Stack();//放連接池的堆?棧
	private static int  currentConnections=0;//當前連接的數?目
	private static int  maxConnections=2;//?zuyi  最大連接的數目
	private static long expiryTime=3600000;//過期時間設為1小時
	private static long maxConnectionsAttempts=50;//?最大重試次數?目
	private static long counterConnectionAttempts=0;//已重試次?數目
	private static long connectionWaitTimeout=10*1000;//連接等待時間
	
	//數據庫連接初始化
	static {
		propretites = ResourceBundle.getBundle("fish");
		String jdbcDriver = propretites.getString("DB.classForName");
		  String dbUrl = propretites.getString("DB.dataBase");
		  String dbUserName = propretites.getString("DB.userName");
		  String dbPassword = propretites.getString("DB.passWord");

		try {
			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")
					.newInstance();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		url = dbUrl;
		user = dbUserName;
		password = dbPassword;
	}
	
	
//	public static synchronized Connection getConnection() {
//		System.out.println("??始連接數據庫!");
//		try {
//			conn = DriverManager.getConnection(url, user, password);
//			System.out.println("數據庫連接成??");
//		} catch (SQLException e1) {
//			e1.printStackTrace();
//		}
//		return conn;
//	}
	
	
	 public static synchronized DBConnection getConnection() throws Exception//返回??個連??
	  {
	    DBConnection connection=null;//建力??個的DBConnection對象
	    if(pool.empty()&&currentConnections<maxConnections)//如果當前的堆棧為空并且當前的當前連接數小于最大連接數
	    {
	    	//System.out.println("新連?jkjie   接");
	      connection=getNewConnection();//調用getNewConnection方法已獲得一個新連接
	      //System.out.println("新的連接"+currentConnections);
	    }
	    else
	    {
	    	//System.out.println("老連?接");
	      connection=getPooledConnection();//調用getPooledConnection方法以便從堆棧中取出??個連??
	      //System.out.println("彈出連接");
	    }
	    return connection;//返回??個連接對??
	  }
	
	
	
	  private static synchronized DBConnection getPooledConnection() throws Exception//得到連接池的??個連??
	  {
	    DBConnection con=null;
	    for(int i=0;i<10;i++){
	    if(pool.empty())//如果堆棧為空
	    {
	        sleep(50);//休眠500毫秒
	        //wait(3600000);
	        //return popConnection(driver, url, uid, pwd);
	      }
	      else {
	        return popConnection();//返回堆棧中的??個連??
	      }
	    }throw new Exception(url + "連接超時");
	  }
	  
	  private static DBConnection getNewConnection() throws Exception//返回??個新的連??
	  {
	   // Class.forName(driver).newInstance();//裝載??
	    Connection con=DriverManager.getConnection(url, user, password);//獲得連接
	   currentConnections++;//當前連接數加1
	    return new DBConnection(con,url);//返回??個DBConnection對象
	  }

	  private static DBConnection popConnection() throws Exception//彈出??個連??
	  {
	    while(!pool.empty())//如果堆棧不為??
	    {
	      DBConnection con=(DBConnection)pool.pop();//從堆棧中彈出??個連??
	      if (isValid(con)) {//判斷連接是否合法
	        counterConnectionAttempts = 0;//如果合法把連接次數設置為0

	        return con;//返回堆棧中彈出的連接
	      }
	      else {
	        con.close();//如果連接不合??
	        currentConnections--;//當前連接數減1
	        counterConnectionAttempts = 0;//把連接次數設置為0
	        if (pool.empty()) {
		      //  System.out.println("old connect");
	          return getNewConnection();
	        }
	      }
	    }throw new Exception();
	  }

	  private static boolean isExpired(DBConnection con) throws Exception//判斷是否過期
	  {
	 
	    return(System.currentTimeMillis()-con.gettimestamp())>expiryTime;
	  }

	  private static boolean isValid(DBConnection con) throws Exception//判斷是否合法
	  {
//	    System.out.println((con.getConnection()!=null));
//	    System.out.println(!con.getConnection().isClosed());
//	    System.out.println(!isExpired(con));
	  	return(con.getConnection()!=null&&!con.getConnection().isClosed()&&!isExpired(con));
	  }

	  public static synchronized void release(DBConnection con) throws Exception//將連接放回連接池
	  {
	    if(isValid(con))
	    {
	    	pool.push(con);
//	      System.out.println("當前連接??"+currentConnections);
//	      System.out.println("連接池連接數"+pool.size());
	    //notify();
	    }
	    else
	    {
	        con.close();
	       currentConnections--;
//	        System.out.println("當前連接??"+currentConnections);
//	        System.out.println("連接池連接數"+com.choice.common.Connections.pool.size());
	    }
	  }
	  /*protected void finalize() throws Throwable//關閉??有連??
	  {
	    shutdown();
	  }*/

	  protected void shutdown()//關閉??有數據庫的連??
	  {
	    if(pool!=null)
	    {
	      while(!pool.isEmpty())
	      {
	        ((DBConnection)pool.pop()).close();
	      }
	    }
	  }
	

	
	
	//執行?SQL語句,并返回是否成功
	public static boolean execute(String sql) {
		Connection cnn = null;
		DBConnection dbcnn=null;
		Statement stmt = null;
		try {
			dbcnn=getConnection();
			cnn = dbcnn.getConnection();
			stmt = cnn.createStatement();
			stmt.execute(sql);
			return true;
		} catch (Exception ex) {
			return false;
		} finally {
			try {
				if (stmt != null)
					stmt.close();
				stmt = null;
			} catch (Exception ex) {
			}
//			try {
//				if (cnn != null)
//					cnn.close();
//				cnn = null;
//			} catch (Exception ex) {
//			}
			
		    try {
			    //  System.out.println("進棧");
			      release(dbcnn);
			    }
			    catch (Exception ex) {
			      ex.printStackTrace();
			    }
		}
	}
	

	//執行批量SQL
	public static boolean batchExcute(String[] sql){
        for(int i=0;i<sql.length;i++){
          if(!execute(sql[i])){
          	System.out.println(i);
          	return false;
          	}
        }
        return true;
    }
	
	
	
	//執行SQL語句,將結果存入hashtable表中
	public static Hashtable[] getHashQuery(String sql) {
		Connection cnn = null;
		DBConnection dbcnn=null;
		Vector vetRet = new Vector();
		String fieldName;
		String fieldValue;
		Statement stmt = null;
		ResultSet rst = null;
		try {
			dbcnn=getConnection();
			cnn = dbcnn.getConnection();
			stmt = cnn.createStatement();
			rst = stmt.executeQuery(sql);
			ResultSetMetaData resultMeta = rst.getMetaData();
			int columns = resultMeta.getColumnCount();
			Hashtable record = new Hashtable();
			int i = 0;
			int rows = 0;
			while (rst.next()) {
				record.clear();
				for (i = 1; i <= columns; i++) {
					fieldName = new String(resultMeta.getColumnLabel(i));
        			fieldName=fieldName.toUpperCase();
					String temp=rst.getString(fieldName);
					fieldValue = temp == null ? "" :temp;
					record.put(fieldName, fieldValue);
				}
				vetRet.addElement(record.clone());
				rows++;
			}
			if (rows == 0) {
				return null;
			} else {
				Hashtable[] hashRet = new Hashtable[vetRet.size()];
				vetRet.copyInto(hashRet);
				return hashRet;
			}
		} catch (Exception ex) {
			ex.printStackTrace();
			return null;
		} finally {
			try {
				if (rst != null)
					rst.close();
				rst = null;
			} catch (Exception ex) {
			}
			try {
				if (stmt != null)
					stmt.close();
				stmt = null;
			} catch (Exception ex) {
			}
//			try {
//				if (cnn != null)
//					cnn.close();
//				cnn = null;
//			} catch (Exception ex) {
//			}


		    try {
		//	      System.out.println("進棧");
			      release(dbcnn);
			    }
			    catch (Exception ex) {
			      ex.printStackTrace();
			    }
		}
	}
	

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区视频在线观看 | 亚洲欧美激情在线| 亚洲一区二区在线视频| 日韩精品亚洲一区二区三区免费| 久久国产欧美日韩精品| jvid福利写真一区二区三区| 欧洲一区二区av| 精品国产91乱码一区二区三区| 日本一区二区电影| 午夜影视日本亚洲欧洲精品| 国产精品18久久久久久久久久久久 | 欧美成人精品福利| 最新国产の精品合集bt伙计| 亚洲v中文字幕| 国产精品自产自拍| 在线一区二区三区做爰视频网站| 精品美女在线播放| 亚洲午夜久久久久| 成人av影院在线| 91精品国产麻豆国产自产在线 | 99天天综合性| 日韩免费视频线观看| 亚洲色图另类专区| 欧美精品1区2区3区| 国产精品日韩成人| 日本伊人色综合网| 一本到三区不卡视频| 2021中文字幕一区亚洲| 亚洲另类在线制服丝袜| 国产永久精品大片wwwapp| 色哟哟欧美精品| 国产日韩v精品一区二区| 一区二区免费看| 国产精品综合久久| 欧美精品久久天天躁| ...av二区三区久久精品| 另类小说图片综合网| 欧美专区日韩专区| 国产精品视频在线看| 久久精品噜噜噜成人88aⅴ| 欧美唯美清纯偷拍| 亚洲乱码日产精品bd| 国产成人精品一区二| 欧美精品一区二区蜜臀亚洲| 日韩电影在线一区二区| 在线欧美小视频| 亚洲欧美日韩国产另类专区| 岛国一区二区三区| 久久新电视剧免费观看| 日韩av在线发布| 欧美日韩的一区二区| 亚洲一二三区在线观看| voyeur盗摄精品| 国产午夜精品福利| 国产精品一区二区91| 日韩欧美一级片| 日韩国产在线观看一区| 欧美日韩精品一区二区三区蜜桃| 亚洲日本欧美天堂| 成人午夜看片网址| 国产精品毛片大码女人| 成人国产亚洲欧美成人综合网| 久久精品一区二区三区不卡| 国产一区二区网址| 久久综合五月天婷婷伊人| 毛片av一区二区| 日韩视频免费直播| 免费成人在线观看视频| 91精品一区二区三区在线观看| 天堂va蜜桃一区二区三区 | 亚洲成人av中文| 欧美丝袜第三区| 午夜精品免费在线| 在线播放91灌醉迷j高跟美女| 日韩精品亚洲专区| 精品精品国产高清a毛片牛牛| 美女视频第一区二区三区免费观看网站 | 国产精品家庭影院| 91在线观看视频| 高清在线不卡av| 欧美国产禁国产网站cc| 国产精品1区2区3区| 国产精品情趣视频| 色8久久精品久久久久久蜜| 亚洲在线观看免费视频| 91精品国产品国语在线不卡| 蜜臀av性久久久久蜜臀av麻豆 | 国产精品77777竹菊影视小说| 久久久另类综合| 97精品电影院| 午夜精品福利一区二区蜜股av| 717成人午夜免费福利电影| 久久99久久久久| 欧美激情中文不卡| 91蝌蚪porny| 午夜一区二区三区在线观看| 欧美一二三区精品| 成人综合在线观看| 亚洲在线观看免费视频| 日韩三级视频在线观看| 成人三级在线视频| 亚洲高清中文字幕| 精品剧情v国产在线观看在线| 高清beeg欧美| 亚洲午夜激情av| 精品动漫一区二区三区在线观看| 成人精品鲁一区一区二区| 一区二区三区日韩精品视频| 日韩视频免费观看高清完整版在线观看| 国产麻豆精品久久一二三| 亚洲免费观看高清完整版在线观看| 欧美无乱码久久久免费午夜一区| 九九视频精品免费| 亚洲乱码中文字幕| 久久久欧美精品sm网站| 91蜜桃网址入口| 看国产成人h片视频| 国产精品免费久久久久| 欧美一区二区美女| 91免费观看视频| 国内精品国产成人国产三级粉色 | 欧美在线观看视频一区二区| 蜜桃视频在线观看一区二区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 色综合色狠狠综合色| 日韩精品乱码免费| 国产精品成人免费| 日韩欧美电影一区| 色噜噜狠狠一区二区三区果冻| 毛片av中文字幕一区二区| 亚洲精品视频观看| 国产亚洲女人久久久久毛片| 欧美日韩和欧美的一区二区| 粉嫩av一区二区三区在线播放| 天天影视色香欲综合网老头| 中文字幕欧美国产| 日韩精品一区国产麻豆| 色婷婷久久综合| 国产成人精品一区二区三区网站观看| 午夜精品一区在线观看| 国产精品久久看| 久久亚洲一级片| 91精品在线一区二区| 在线亚洲+欧美+日本专区| 国产一区二区三区观看| 五月综合激情婷婷六月色窝| 亚洲欧美国产77777| 久久精品欧美日韩精品| 日韩三级视频中文字幕| 欧美日韩在线免费视频| 99精品在线免费| 粉嫩欧美一区二区三区高清影视| 久久精品国产久精国产| 天天色综合成人网| 夜夜精品浪潮av一区二区三区| 国产女同互慰高潮91漫画| 久久综合九色综合久久久精品综合 | 国产日韩欧美高清| 久久品道一品道久久精品| 91精品国产色综合久久ai换脸| 色狠狠色狠狠综合| 99re热视频精品| 99re成人精品视频| 成年人网站91| 风间由美中文字幕在线看视频国产欧美 | 色综合久久久久综合99| 欧美一区二区黄色| 欧美日韩国产综合视频在线观看| 91国内精品野花午夜精品| 色综合久久88色综合天天6| 99久久99久久精品国产片果冻| 成人免费视频国产在线观看| 国产精品系列在线观看| 国产福利电影一区二区三区| 国产综合久久久久影院| 国模套图日韩精品一区二区| 蜜桃久久久久久| 另类小说色综合网站| 精品亚洲aⅴ乱码一区二区三区| 麻豆视频一区二区| 久久99热这里只有精品| 久久成人免费电影| 狠狠色狠狠色合久久伊人| 狠狠色丁香久久婷婷综| 国产在线视视频有精品| 国产精品一区一区| 国产69精品一区二区亚洲孕妇| 成人免费视频一区二区| 91美女视频网站| 日本高清成人免费播放| 欧美日韩高清一区二区| 91精品国产色综合久久久蜜香臀| 日韩欧美一级在线播放| 国产性做久久久久久| 日韩理论在线观看| 亚洲一区二区欧美激情| 男女视频一区二区| 国产91丝袜在线播放0| 99久久婷婷国产综合精品| 在线精品视频小说1|