Descarga del paquete de dependencia: http://xiazai.VeVB.COm/201407/tools/java-db-dependency(VeVB.COm).rar
Código fuente de la clase de conexión de base de datos:
paquete 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;/** * Clase completa para conectarse a la base de datos. </br> * Depende de los paquetes jar: paquete commons.dbcp-1.4, commons.dbutils-1.3, commons.pool-1.5.4. * * @autor Song Lijun* @fecha 3 de julio de 2014*/public class DBUtil {private String dri = null;private String url = null;private String nombre de usuario = null;private String contraseña = null;private String poolName = null / / Nombre del grupo de conexiones Private ObjectPool ConnectionPool = null // Grupo de conexiones // Clase de consulta programada correspondiente Private QueryThread queryThread = null /** * Función: Constructor * * @author Song Lijun * @fecha 3 de julio de 2014 * @param dri * Nombre de clase completo del controlador, por ejemplo: com.mysql.jdbc.Driver. * @param url * Conexión URL de la base de datos, por ejemplo: * "jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8" * @param userName * Nombre de usuario de la base de datos, por ejemplo: root * @param contraseña * Contraseña de la base de datos, por ejemplo: abc * @param poolName * El nombre del grupo de conexiones de base de datos creado, como mypool. Tenga en cuenta que este nombre no se puede repetir para un contenedor web. */public DBUtil(String dri, String url, String nombre de usuario, String contraseña,String poolName) {this.dri = dri;this.url = url;this.username = nombre de usuario;this.password = contraseña;this.poolName = poolName ;}/** * Ejecutar sql. * * @param conn * Conexión * @param pstm * PreparedStatement * @return int La fila afectada correspondiente a la ejecución de sql. * @throws SQLException * @author Song Lijun* @fecha 3 de julio de 2014*/public int ejecutar(Connection conn, PreparedStatement pstm)throws SQLException {try {return pstm.executeUpdate();} finalmente {Close(conn);} } /** * Consulta sql. * * @param conn * Conexión * @param pstm * PreparedStatement * @return List<Map<String,Object>> Conjunto de resultados de consulta * @throws SQLException * @author Song Lijun * @date 3 de julio de 2014 */public List <Map <Cadena, Objeto>> consulta (conexión de conexión, declaración preparada pstm) arroja SQLException {intenta {regresar resultSetToList(pstm.executeQuery());} finalmente {Close(conn);}}/** * Función: ResultSet se convierte en List<Map<String,Object>> * * * @param rs * Conjunto de datos original de ResultSet * @ return Lista<Mapa<Cadena,Objeto>> * @throws java.sql.SQLException * @autor Song Lijun* @fecha 3 de julio de 2014*/lista privada<Mapa<Cadena, Objeto>> resultSetToList(ResultSet rs)throws java.sql.SQLException {if (rs == null)return Collections.EMPTY_LIST;ResultSetMetaData md = rs.getMetaData() ; / Obtenga la información estructural del conjunto de resultados (rs), como el número de campos, nombres de campos, etc. int columnCount = md.getColumnCount(); // Devuelve el número de columnas en este objeto ResultSet List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Map<String, Object> rowData = nuevo HashMap<Cadena, Objeto>(); while (rs.next()) {rowData = nuevo HashMap<Cadena, Objeto>(columnCount);for (int i = 1; i <= columnCount; i++) {rowData.put(md.getColumnName(i), rs.getObject(i));}list.add(rowData);}return list;}/** * Consultar sentencia SQL. * * @param sql * La declaración sql ejecutada * @return List<Map<String,Object>> * @throws SQLException * @author Song Lijun* @fecha 3 de julio de 2014 */public List<Map<String, Object >> consulta (Cadena sql) arroja SQLException {Lista<Mapa<Cadena, Objeto>> resultados = nulo; Conexión conexión = nula; prueba {conexión = getConnection();QueryRunner qr = new QueryRunner();resultados = qr.query(conn, sql, new MapListHandler());} finalmente {Close(conn);}devolver resultados;}/** * Consulta sql basada en declaración de parámetros * * @param sql * declaración sql * @param param * parámetro * @return List<Map<String,Object>> * @throws SQLException * @author Song Lijun* @fecha 3 de julio de 2014*/public List<Map<String, Object>> consulta(String sql, Object param)throws SQLException {List < Mapa<Cadena, Objeto>> resultados = nulo;Conexión conn = nulo;pruebe {conn = getConnection();QueryRunner qr = nuevo QueryRunner();resultados = (List<Map<String, Object>>) qr.query(conn, sql, param,new MapListHandler());} catch (SQLException e) {e.printStackTrace();} finalmente {Cerrar (conn);}devolver resultados;}/** * Ejecutar sentencia sql* * @param sql * La sentencia sql ejecutada* @return Filas afectadas* @throws Excepción * @author Song Lijun* @fecha 3 de julio de 2014*/public int ejecutar(String sql) lanza excepción {Connection conn = getConnection();int rows = 0;try {QueryRunner qr = new QueryRunner(); filas = qr.update(conn, sql);} finalmente {Close(conn);}return rows;}/** * Ejecutar la instrucción sql con parámetros* * @param sql * La instrucción sql ejecutada* @param params * Parameters* @return Devuelve las filas afectadas* @throws Excepción * @ autor Song Lijun* @fecha 3 de julio de 2014*/public int ejecutar(String sql, Object[] params) lanza una excepción {Conexión conexión = getConnection();int filas = 0;pruebe {QueryRunner qr = new QueryRunner();filas = qr.update(conn, sql, params);} finalmente {Cerrar(conn);}devolver filas;}/ ** * Cerrar la conexión * * @param conn * @throws SQLException * @author Song Lijun * @date 3 de julio de 2014*/public void Close(Connection conn) lanza SQLException {if (conn!= null) {conn.close();}DbUtils.closeQuietly(conn);}/** * Iniciar el grupo de conexiones* * @ autor Song Lijun* @fecha 3 de julio de 2014*/private void StartPool() {try {Class.forName(dri);} catch (ClassNotFoundException e1) {e1.printStackTrace();}if (connectionPool! = null) {ShutdownPool();}try {connectionPool = new GenericObjectPool(null);ConnectionFactory connectFactory = new DriverManagerConnectionFactory(url, nombre de usuario, contraseña);PoolableConnectionFactory poolableConnectionFactory = nuevo 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(nombredelgrupo, poolableConnectionFactory.getPool());} catch (Exception e) {e.printStackTrace();}//Abrir el programa de consulta queryThread = new QueryThread(this);queryThread.start();}/** * Cerrar el grupo de conexiones * * @autor Song Lijun* @fecha 3 de julio de 2014*/private void ShutdownPool() {prueba {controlador PoolingDriver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");driver.closePool(poolName);//Cerrar consulta programada queryThread.setStartQuery(false);} catch (SQLException e) {e.printStackTrace() ;}}/** * Obtener una conexión* * @return * @author Song Lijun* @date 3 de julio de 2014*/Conexión pública sincronizada getConnection() {Connection conn = null;try {if (connectionPool == null)StartPool();conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:"+ poolName) ;} captura (Excepción e) {e.printStackTrace();}return conn;}}/** * Cuando se inicia el grupo de conexiones, consultará automáticamente la base de datos con regularidad para evitar que se agote el tiempo de espera de la conexión. * * @author Song Lijun* @fecha 3 de julio de 2014*/class QueryThread extends Thread {private DBUtil dbUtil = null;//Si se debe habilitar la consulta privada booleana startQuery = true;/** * Función: conexión de base de datos correspondiente. * * @author Song Lijun* @fecha 3 de julio de 2014* @param dbUtil * Conexión de base de datos*/public QueryThread(DBUtil dbUtil) {this.dbUtil = dbUtil;}public void run() { while (true) {try { if (startQuery) {this.dbUtil.query("seleccione 1");}// System.out.println(startQuery+" 123");} catch (Exception e) {e.printStackTrace();} finalmente {pruebe {Thread.sleep(120000);} catch (InterruptedException e) {e.printStackTrace(); }}}}public void setStartQuery(boolean startQuery) {// System.out.println("startQuery cerrar:"+startQuery);this.startQuery = startQuery;}}