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

首頁 > 編程 > Java > 正文

java常用工具類之數據庫連接類(可以連接多種數據庫)

2019-11-26 15:28:50
字體:
來源:轉載
供稿:網友

依賴包下載:http://xiazai.VeVB.COm/201407/tools/java-db-dependency(VeVB.COm).rar

數據庫連接類源碼:

package com.itjh.javaUtil;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.commons.dbcp.ConnectionFactory;import org.apache.commons.dbcp.DriverManagerConnectionFactory;import org.apache.commons.dbcp.PoolableConnectionFactory;import org.apache.commons.dbcp.PoolingDriver;import org.apache.commons.dbutils.DbUtils;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.MapListHandler;import org.apache.commons.pool.ObjectPool;import org.apache.commons.pool.impl.GenericObjectPool;/** * 連接數據庫的綜合類。</br> * 依賴jar包:commons.dbcp-1.4,commons.dbutils-1.3,commons.pool-1.5.4包。 *  * @author 宋立君 * @date 2014年07月03日 */public class DBUtil {	private String dri = null;	private String url = null;	private String username = null;	private String password = null;	private String poolName = null; // 連接池名稱	private ObjectPool connectionPool = null; // 連接池	// 對應的定時查詢類	private QueryThread queryThread = null;	/**	 * 功能:構造函數	 * 	 * @author 宋立君	 * @date 2014年07月03日	 * @param dri	 *      驅動全類名,例如:com.mysql.jdbc.Driver。	 * @param url	 *      數據庫url連接,例如:	 *      "jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8"	 * @param userName	 *      數據庫用戶名,例如:root	 * @param password	 *      數據庫密碼,例如:abc	 * @param poolName	 *      創建的數據庫連接池的名稱,例如mypool,注意一個web容器此名稱不能重復。	 */	public DBUtil(String dri, String url, String userName, String password,			String poolName) {		this.dri = dri;		this.url = url;		this.username = userName;		this.password = password;		this.poolName = poolName;	}	/**	 * 執行sql。	 * 	 * @param conn	 *      連接	 * @param pstm	 *      PreparedStatement	 * @return int 執行sql對應的影響行。	 * @throws SQLException	 * @author 宋立君	 * @date 2014年07月03日	 */	public int execute(Connection conn, PreparedStatement pstm)			throws SQLException {		try {			return pstm.executeUpdate();		} finally {			Close(conn);		}	}	/**	 * 查詢sql。	 * 	 * @param conn	 *      連接	 * @param pstm	 *      PreparedStatement	 * @return List<Map<String,Object>> 查詢的結果集	 * @throws SQLException	 * @author 宋立君	 * @date 2014年07月03日	 */	public List<Map<String, Object>> query(Connection conn,			PreparedStatement pstm) throws SQLException {		try {			return resultSetToList(pstm.executeQuery());		} finally {			Close(conn);		}	}	/**	 * 功能:ResultSet 轉為List<Map<String,Object>>	 * 	 * 	 * @param rs	 *      ResultSet 原始數據集	 * @return List<Map<String,Object>>	 * @throws java.sql.SQLException	 * @author 宋立君	 * @date 2014年07月03日	 */	private List<Map<String, Object>> resultSetToList(ResultSet rs)			throws java.sql.SQLException {		if (rs == null)			return Collections.EMPTY_LIST;		ResultSetMetaData md = rs.getMetaData(); // 得到結果集(rs)的結構信息,比如字段數、字段名等		int columnCount = md.getColumnCount(); // 返回此 ResultSet 對象中的列數		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();		Map<String, Object> rowData = new HashMap<String, Object>();		while (rs.next()) {			rowData = new HashMap<String, Object>(columnCount);			for (int i = 1; i <= columnCount; i++) {				rowData.put(md.getColumnName(i), rs.getObject(i));			}			list.add(rowData);		}		return list;	}	/**	 * 查詢sql語句。	 * 	 * @param sql	 *      被執行的sql語句	 * @return List<Map<String,Object>>	 * @throws SQLException	 * @author 宋立君	 * @date 2014年07月03日	 */	public List<Map<String, Object>> query(String sql) throws SQLException {		List<Map<String, Object>> results = null;		Connection conn = null;		try {			conn = getConnection();			QueryRunner qr = new QueryRunner();			results = qr.query(conn, sql, new MapListHandler());		} finally {			Close(conn);		}		return results;	}	/**	 * 根據參數查詢sql語句	 * 	 * @param sql	 *      sql語句	 * @param param	 *      參數	 * @return List<Map<String,Object>>	 * @throws SQLException	 * @author 宋立君	 * @date 2014年07月03日	 */	public List<Map<String, Object>> query(String sql, Object param)			throws SQLException {		List<Map<String, Object>> results = null;		Connection conn = null;		try {			conn = getConnection();			QueryRunner qr = new QueryRunner();			results = (List<Map<String, Object>>) qr.query(conn, sql, param,					new MapListHandler());		} catch (SQLException e) {			e.printStackTrace();		} finally {			Close(conn);		}		return results;	}	/**	 * 執行sql語句	 * 	 * @param sql	 *      被執行的sql語句	 * @return 受影響的行	 * @throws Exception	 * @author 宋立君	 * @date 2014年07月03日	 */	public int execute(String sql) throws Exception {		Connection conn = getConnection();		int rows = 0;		try {			QueryRunner qr = new QueryRunner();			rows = qr.update(conn, sql);		} finally {			Close(conn);		}		return rows;	}	/**	 * 執行含參數的sql語句	 * 	 * @param sql	 *      被執行的sql語句	 * @param params	 *      參數	 * @return 返回受影響的行	 * @throws Exception	 * @author 宋立君	 * @date 2014年07月03日	 */	public int execute(String sql, Object[] params) throws Exception {		Connection conn = getConnection();		int rows = 0;		try {			QueryRunner qr = new QueryRunner();			rows = qr.update(conn, sql, params);		} finally {			Close(conn);		}		return rows;	}	/**	 * 關閉連接	 * 	 * @param conn	 * @throws SQLException	 * @author 宋立君	 * @date 2014年07月03日	 */	public void Close(Connection conn) throws SQLException {		if (conn != null) {			conn.close();		}		DbUtils.closeQuietly(conn);	}	/**	 * 啟動連接池	 * 	 * @author 宋立君	 * @date 2014年07月03日	 */	private void StartPool() {		try {			Class.forName(dri);		} catch (ClassNotFoundException e1) {			e1.printStackTrace();		}		if (connectionPool != null) {			ShutdownPool();		}		try {			connectionPool = new GenericObjectPool(null);			ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(					url, username, password);			PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(					connectionFactory, connectionPool, null, "SELECT 1", false,					true);			Class.forName("org.apache.commons.dbcp.PoolingDriver");			PoolingDriver driver = (PoolingDriver) DriverManager					.getDriver("jdbc:apache:commons:dbcp:");			driver.registerPool(poolName, poolableConnectionFactory.getPool());		} catch (Exception e) {			e.printStackTrace();		}		// 開啟查詢程序		queryThread = new QueryThread(this);		queryThread.start();	}	/**	 * 關閉連接池	 * 	 * @author 宋立君	 * @date 2014年07月03日	 */	private void ShutdownPool() {		try {			PoolingDriver driver = (PoolingDriver) DriverManager					.getDriver("jdbc:apache:commons:dbcp:");			driver.closePool(poolName);			// 關閉定時查詢			queryThread.setStartQuery(false);		} catch (SQLException e) {			e.printStackTrace();		}	}	/**	 * 得到一個連接	 * 	 * @return	 * @author 宋立君	 * @date 2014年07月03日	 */	public synchronized Connection getConnection() {		Connection conn = null;		try {			if (connectionPool == null)				StartPool();			conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:"					+ poolName);		} catch (Exception e) {			e.printStackTrace();		}		return conn;	}}/** * 當連接池啟動后會自動定時查詢數據庫,防止數據庫連接超時。 *  * @author 宋立君 * @date 2014年07月03日 */class QueryThread extends Thread {	private DBUtil dbUtil = null;	// 是否開啟查詢	private boolean startQuery = true;	/**	 * 功能:對應的數據庫連接。	 * 	 * @author 宋立君	 * @date 2014年07月03日	 * @param dbUtil	 *      數據庫連接	 */	public QueryThread(DBUtil dbUtil) {		this.dbUtil = dbUtil;	}	public void run() {		while (true) {			try {				if (startQuery) {					this.dbUtil.query("select 1");				}				// System.out.println(startQuery+"  123");			} catch (Exception e) {				e.printStackTrace();			} finally {				try {					Thread.sleep(120000);				} catch (InterruptedException e) {					e.printStackTrace();				}			}		}	}	public void setStartQuery(boolean startQuery) {		// System.out.println("startQuery shut:"+startQuery);		this.startQuery = startQuery;	}}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一视频网| 久久噜噜噜精品国产亚洲综合| 亚洲第一av网站| 国产精品劲爆视频| 在线日韩日本国产亚洲| 国产日韩欧美夫妻视频在线观看| 久久久国产一区二区三区| 中文字幕欧美日韩在线| 日韩国产一区三区| 日本91av在线播放| 久久精品视频导航| 日韩av在线一区二区| 日韩精品一区二区视频| 亚洲欧美国产精品va在线观看| 亚洲第一av网| 91精品国产综合久久久久久久久| 欧美风情在线观看| 高清亚洲成在人网站天堂| 日韩av成人在线观看| 国产精品久久久久久久7电影| 日韩av在线天堂网| 97国产一区二区精品久久呦| 韩国国内大量揄拍精品视频| 欧美激情免费看| 久久国产精品免费视频| 色婷婷久久av| 久久国产精品影片| 亚洲成人在线网| 欧美性极品少妇精品网站| 欧美日韩精品二区| 亚洲精品videossex少妇| 久久久av免费| 亚洲春色另类小说| 欧美高清无遮挡| 精品av在线播放| 欧美理论在线观看| 欧美一级在线播放| 亚洲三级av在线| 北条麻妃99精品青青久久| 国产精品极品尤物在线观看| 人妖精品videosex性欧美| 亚洲第一二三四五区| 亚洲片国产一区一级在线观看| 日本精品久久久久影院| 日韩亚洲成人av在线| 91老司机精品视频| 色www亚洲国产张柏芝| 久久综合久久美利坚合众国| 久久影视电视剧凤归四时歌| 在线观看欧美日韩| 在线视频一区二区| 国产精品激情av电影在线观看| 久99九色视频在线观看| 国产亚洲aⅴaaaaaa毛片| 另类天堂视频在线观看| 久久精品视频网站| 欧美亚洲另类在线| 亚洲夜晚福利在线观看| 欧美专区在线视频| 草民午夜欧美限制a级福利片| 国产视频在线观看一区二区| 亚洲一区二区三区sesese| 国产精品最新在线观看| 国产精品美女主播| 81精品国产乱码久久久久久| 一区二区欧美日韩视频| 国产香蕉97碰碰久久人人| 在线播放国产一区中文字幕剧情欧美| 国产色婷婷国产综合在线理论片a| 亚洲激情视频在线观看| 欧美性生活大片免费观看网址| 国产精品美女久久久免费| 日韩精品高清在线| 国产精品美女网站| 午夜精品久久17c| 久久精品一区中文字幕| 日韩h在线观看| 日本91av在线播放| 国产精品精品久久久| 久久香蕉频线观| 日韩精品在线视频| 欧美在线观看视频| 成人一区二区电影| 国产精品一区二区三区毛片淫片| 国产亚洲欧洲高清一区| 欧美日韩精品二区| 宅男66日本亚洲欧美视频| www.亚洲一区| 日韩成人中文字幕在线观看| 欧美亚洲视频在线观看| 精品人伦一区二区三区蜜桃网站| 欧美巨大黑人极品精男| 日韩中文第一页| 亚洲自拍中文字幕| 欧美孕妇毛茸茸xxxx| 国产成人精品国内自产拍免费看| 亚洲男女自偷自拍图片另类| 欧美国产日韩一区二区| 日韩美女免费线视频| 爽爽爽爽爽爽爽成人免费观看| 日本久久久久亚洲中字幕| 97在线看福利| 久久天天躁夜夜躁狠狠躁2022| 隔壁老王国产在线精品| 久久亚洲欧美日韩精品专区| 91精品国产色综合| 这里只有视频精品| 国产精品欧美日韩| 亚洲成人三级在线| 欧美中文字幕精品| 97热在线精品视频在线观看| 日韩在线中文视频| 国产伦精品一区二区三区精品视频| 日韩欧美精品免费在线| 日本高清久久天堂| 热久久美女精品天天吊色| 亚洲人成网站777色婷婷| 一区二区三区 在线观看视| 国产精品久久久999| 亚洲国产精品久久精品怡红院| 欧美日韩国产999| 国产大片精品免费永久看nba| 久久色精品视频| 欧美国产极速在线| 久久精品国产亚洲7777| 国产91色在线|| 不用播放器成人网| 午夜精品久久久久久99热| 欧美国产日韩中文字幕在线| 欧美激情视频一区二区| 欧美老女人性生活| 亚洲成人三级在线| 亚洲国产精品久久久久秋霞不卡| 日韩精品极品视频免费观看| 欧美高清不卡在线| 九九久久久久久久久激情| 亚洲欧洲美洲在线综合| 亚洲欧美在线看| 18一19gay欧美视频网站| 亚洲欧美精品中文字幕在线| 欧美日本中文字幕| 成人日韩av在线| 国产精品com| 亚洲精品电影网| 狠狠干狠狠久久| 国产热re99久久6国产精品| 国产亚洲精品美女| 欧美午夜丰满在线18影院| 色综合久久精品亚洲国产| 亚洲天堂男人的天堂| 欧美体内谢she精2性欧美| 欧美成人激情视频| 国产精品福利久久久| 日日狠狠久久偷偷四色综合免费| 成人福利在线观看| 中文字幕亚洲自拍| 性欧美在线看片a免费观看| 国产欧美精品一区二区三区-老狼| 在线观看国产精品91| 亚洲综合中文字幕在线| 97视频在线观看亚洲| 亚洲电影免费观看高清| 一区二区欧美久久| 亚洲一区亚洲二区亚洲三区|