Download do pacote de dependência: http://xiazai.VeVB.COm/201407/tools/java-db-dependency(VeVB.COm).rar
Código fonte da classe de conexão com o banco de dados:
pacote com.itjh.javaUtil;importar java.sql.Connection;importar java.sql.DriverManager;importar java.sql.PreparedStatement;importar java.sql.ResultSet;importar java.sql.ResultSetMetaData;importar java.sql.SQLException;importar java.util.ArrayList;importar java.util.Collections;importar java.util.HashMap;importar java.util.List;importar java.util.Map;importar org.apache.commons.dbcp.ConnectionFactory;importar org.apache.commons.dbcp.DriverManagerConnectionFactory;importar org.apache.commons.dbcp.PoolableConnectionFactory;importar org.apache.commons.dbcp.PoolingDriver;importar org.apache.commons.dbutils.DbUtils;importar org.apache.commons.dbutils.QueryRunner;importar org.apache.commons.dbutils.handlers.MapListHandler;importar org.apache. commons.pool.ObjectPool;importar org.apache.commons.pool.impl.GenericObjectPool;/** * Classe abrangente para conexão com o banco de dados. </br> * Depende dos pacotes jar: pacote commons.dbcp-1.4, commons.dbutils-1.3, commons.pool-1.5.4. * * @author Song Lijun* @data 3 de julho de 2014*/classe pública DBUtil {private String dri = null;private String url = null;private String nome de usuário = null;private String password = null;private String poolName = null /; / Nome do conjunto de conexões private ObjectPool connectionPool = null; // Conjunto de conexões // Classe de consulta agendada correspondente private QueryThread queryThread = null; Função: Construtor * * @author Song Lijun * @date 3 de julho de 2014 * @param dri * Nome completo da classe do driver, por exemplo: com.mysql.jdbc.Driver. * @param url * Conexão de URL do banco de dados, por exemplo: * "jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8" * @param userName * Nome de usuário do banco de dados, por exemplo: root * @param password * Senha do banco de dados, por exemplo: abc * @param poolName * O nome do conjunto de conexões de banco de dados criado, como mypool. Observe que esse nome não pode ser repetido para um contêiner da web. */public DBUtil(String dri, String url, String userName, String password,String poolName) {this.dri = dri;this.url = url;this.username = userName;this.password = senha;this.poolName = poolName ;}/** * Executa sql. * * @param conn * Connection * @param pstm * PreparedStatement * @return int A linha afetada correspondente à execução do sql. * @throws SQLException * @author Song Lijun* @date 3 de julho de 2014*/public int execute(Connection conn, PreparedStatement pstm)throws SQLException {try {return pstm.executeUpdate();} finalmente {Close(conn);} } /** * Consulta SQL. * * @param conn * Conexão * @param pstm * PreparedStatement * @return List<Map<String,Object>> Conjunto de resultados da consulta * @throws SQLException * @author Song Lijun * @date 3 de julho de 2014 */public List <Map <String, Object>> query(Connection conn,PreparedStatement pstm) lança SQLException {try {return resultSetToList(pstm.executeQuery());} finalmente {Close(conn);}}/** * Função: ResultSet é convertido em List<Map<String,Object>> * * * @param rs * ResultSet conjunto de dados original * @ return List<Map<String,Object>> * @throws java.sql.SQLException * @author Song Lijun* @date 3 de julho de 2014*/private List<Map<String, Object>> resultSetToList(ResultSet rs)throws java.sql.SQLException {if (rs == null)return Collections.EMPTY_LIST;ResultSetMetaData md = rs.getMetaData() ; / Obtenha as informações estruturais do conjunto de resultados (rs), como número de campos, nomes de campos, etc. columnCount = md.getColumnCount(); // Retorna o número de colunas neste objeto 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;}/** * Consulta instrução sql. * * @param sql * A instrução sql executada * @return List<Map<String,Object>> * @throws SQLException * @author Song Lijun* @date 3 de julho de 2014 */public List<Map<String, Object >> query(String sql) lança SQLException {List<Map<String, Object>> resultados = null;Connection conn = null;try {conn = getConnection();QueryRunner qr = new QueryRunner();results = qr.query(conn, sql, new MapListHandler());} finalmente {Close(conn);}retorna resultados;}/** * Consulta sql com base em instrução de parâmetros * * @param sql * instrução sql * @param param * parâmetro * @return List<Map<String,Object>> * @throws SQLException * @author Song Lijun* @date 3 de julho de 2014*/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();resultados = (List<Map<String, Object>>) qr.query(conn, sql, param,new MapListHandler());} catch (SQLException e) {e.printStackTrace();} finalmente {Fechar (conn);}return results;}/** * Executar instrução sql* * @param sql * A instrução sql executada* @return Linhas afetadas* @throws Exception * @author Song Lijun* @date 3 de julho de 2014*/public int execute(String sql) lança Exception {Connection conn = getConnection();int rows = 0;try {QueryRunner qr = new QueryRunner(); linhas = qr.update(conn, sql);} finalmente {Close(conn);}return rows;}/** * Execute a instrução sql com parâmetros* * @param sql * A instrução sql executada* @param params * Parâmetros* @return Retorna as linhas afetadas* @throws Exception * @ autor Song Lijun* @data 3 de julho de 2014*/public int execute(String sql, Object[] params) lança exceção {Connection conn = getConnection();int linhas = 0;tente {QueryRunner qr = new QueryRunner();rows = qr.update(conn, sql, params);} finalmente {Close(conn);}retornar linhas;}/ ** * Fechar a conexão * * @param conn * @throws SQLException * @author Song Lijun * @date 3 de julho de 2014*/public void Close(Connection conn) lança SQLException {if (conn != null) {conn.close();}DbUtils.closeQuietly(conn);}/** * Inicia o pool de conexões* * @ autor Song Lijun* @data 3 de julho de 2014*/private void StartPool() {try {Class.forName(dri);} catch (ClassNotFoundException e1) {e1.printStackTrace();}if (connectionPool != null) {ShutdownPool();}tente {connectionPool = new GenericObjectPool(null);ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(url, nome de usuário, senha);PoolableConnectionFactory poolableConnectionFactory = novo 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();}//Abra o programa de consulta queryThread = new QueryThread(this);queryThread.start();}/** * Fecha o conjunto de conexões * * @author Song Lijun* @date 3 de julho de 2014*/private void ShutdownPool() {try {PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");driver.closePool(poolName);//Fechar consulta agendada queryThread.setStartQuery(false);} catch (SQLException e) {e.printStackTrace() ;}}/** * Obtenha uma conexão* * @return * @author Song Lijun* @date 3 de julho de 2014*/conexão pública sincronizada getConnection() {Connection conn = null;try {if (connectionPool == null)StartPool();conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:"+ poolName) ;} catch (Exceção e) {e.printStackTrace();}return conn;}}/** * Quando o pool de conexões for iniciado, ele consultará automaticamente o banco de dados regularmente para evitar que o tempo limite da conexão com o banco de dados se esgote. * * @author Song Lijun* @date 3 de julho de 2014*/class QueryThread estende Thread {private DBUtil dbUtil = null;//Se ativar a consulta private boolean startQuery = true;/** * Função: conexão de banco de dados correspondente. * * @author Song Lijun* @data 3 de julho de 2014* @param dbUtil * Conexão de banco de dados*/public QueryThread(DBUtil dbUtil) {this.dbUtil = dbUtil;}public void run() {while (true) {try { if (startQuery) {this.dbUtil.query("selecione 1");}// System.out.println(startQuery+" 123");} catch (Exception e) {e.printStackTrace();} finalmente {try {Thread.sleep(120000);} catch (InterruptedException e) {e.printStackTrace(); }}}}public void setStartQuery(boolean startQuery) {// System.out.println("startQuery fechar:"+startQuery);this.startQuery = startQuery;}}