Загрузка пакета зависимостей: http://xiazai.VeVB.COm/201407/tools/java-db-dependentency(VeVB.COm).rar
Исходный код класса подключения к базе данных:
пакет com.itjh.javaUtil;импорт java.sql.Connection;импорт java.sql.DriverManager;импорт java.sql.PreparedStatement;импорт java.sql.ResultSet;импорт java.sql.ResultSetMetaData;импорт java.sql.SQLException;импорт java.util.ArrayList;импорт java.util.Collections;импорт java.util.HashMap;импорт java.util.List;импорт java.util.Map;импорт org.apache.commons.dbcp.ConnectionFactory;импорт org.apache.commons.dbcp.DriverManagerConnectionFactory;импорт org.apache.commons.dbcp.PoolableConnectionFactory;импорт org.apache.commons.dbcp.PoolingDriver;импорт org.apache.commons.dbutils.DbUtils;импорт org.apache.commons.dbutils.QueryRunner;импорт org.apache.commons.dbutils.handlers.MapListHandler;импорт org.apache. commons.pool.ObjectPool;импорт org.apache.commons.pool.impl.GenericObjectPool;/** * Комплексный класс для подключения к базе данных. </br> * Зависит от пакетов jar: commons.dbcp-1.4, commons.dbutils-1.3, commons.pool-1.5.4. * * @author Song Lijun* @date, 3 июля 2014 г.*/public class DBUtil {private String dri = null;private String url = null;private String username = null;private Stringpassword = null;private StringpoolName = null /; / Имя пула соединений Private ObjectPool ConnectionPool = null // Пул соединений // Соответствующий класс запланированных запросов. Private QueryThread queryThread = null /** *; Функция: Конструктор * * @author Song Lijun * @date 3 июля 2014 г. * @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 пароль * Пароль базы данных, например: abc * @param PoolName * Имя созданного пула подключений к базе данных, например mypool. Обратите внимание, что это имя не может повторяться для веб-контейнера. */public DBUtil(String dri, String url, String userName, String пароль, StringpoolName) {this.dri = dri;this.url = url;this.username = userName;this.password = пароль;this.poolName = PoolName ;}/** * Выполнить sql. * * @param conn * Connection * @param pstm * ReadedStatement * @return int Затронутая строка, соответствующая выполнению sql. * @throws SQLException * @author Song Lijun* @date 3 июля 2014 г. */public int выполнить(Connection conn, ReadedStatement pstm) выдает SQLException {try {return pstm.executeUpdate();} наконец {Close(conn);} } /** * Запрос sql. * * @param conn * Соединение * @param pstm * ReadedStatement * @return List<Map<String,Object>> Набор результатов запроса * @throws SQLException * @author Song Lijun * @date 3 июля 2014 г. */public List <Map Запрос <String, Object>> (Connection conn, PreparedStatement pstm) выдает 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 Song Lijun* @date 3 июля 2014 г. */private List<Map<String, Object>> resultSetToList(ResultSet rs) выдает java.sql.SQLException {if (rs == null) return Collections.EMPTY_LIST;ResultSetMetaData md = rs.getMetaData() ; / Получить структурную информацию результирующего набора (rs), такую как количество полей, имена полей и т. д. int columnsCount = md.getColumnCount(); // Возвращаем количество столбцов в этом объекте ResultSet List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Map<String, Object> rowData = новый HashMap<String, Object>(); while (rs.next()) {rowData = новый HashMap<String, Object>(columnCount);for (int i = 1; i <= columnsCount; 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 Song Lijun* @date 3 июля 2014 г. */public List<Map<String, Object >> запрос (String sql) выдает SQLException {List<Map<String, Object>> результаты = null; Connection conn = null; попробуйте {conn = getConnection();QueryRunner qr = new QueryRunner();results = qr.query(conn, sql, new MapListHandler());} наконец {Close(conn);}возвращает результаты;}/** * Запрос sql на основе оператор параметров * * @param sql * оператор sql * @param param * параметр * @return List<Map<String,Object>> * @throws SQLException * @author Song Lijun* @date 3 июля 2014 г.*/public List<Map<String, Object>> query(String sql, Object param) выдает SQLException {List < Map<String, Object>> результаты = null; Connection conn = null; попробуйте {conn = getConnection (); QueryRunner qr = new QueryRunner();results = (List<Map<String, Object>>) qr.query(conn, sql, param,new MapListHandler());} catch (SQLException e) {e.printStackTrace();} наконец {Close (conn);}возврат результатов;}/** * Выполнение оператора sql* * @param sql * Выполненный оператор sql* @return Затронутые строки* @throws Exception * @author Song Lijun* @date 3 июля 2014 г.*/public int Execute(String sql) выдает исключение {Connection conn = getConnection();int rows = 0; попробуйте {QueryRunner qr = new QueryRunner(); строки = qr.update(conn, sql);} наконец {Close(conn);}return rows;}/** * Выполнить оператор sql с параметрами* * @param sql * Выполненный оператор sql* @param params * Параметры* @return Возврат затронутых строк* @throws Exception * @ автор Сон Лицзюнь * @дата, 3 июля 2014 г. * / public int Execute (String sql, Object[] params) выдает исключение {Connection conn = getConnection();int rows = 0;попробуйте {QueryRunner qr = new QueryRunner();rows = qr.update(conn, sql, params);} наконец {Close(conn);}верните строки;}/ ** * Закройте соединение * * @param conn * @throws SQLException * @author Song Lijun * @date 3 июля 2014 г. */public void Close(Connection conn) выдает SQLException {if (conn != null) {conn.close();}DbUtils.closeQuietly(conn);}/** * Запуск пула соединений* * @ автор Сон Лицзюнь* @дата, 3 июля 2014 г.*/private void StartPool() {try {Class.forName(dri);} catch (ClassNotFoundException e1) {e1.printStackTrace();}if (connectionPool!= null) {ShutdownPool();}попробуйте {connectionPool = new GenericObjectPool(null);ConnectionFactory ConnectionFactory = new DriverManagerConnectionFactory(url, имя пользователя, пароль);PoolableConnectionFactorypoolableConnectionFactory = новый 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 3 июля 2014 г. */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 3 июля 2014 г. */publicsynced 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 Song Lijun* @date, 3 июля 2014 г. */class QueryThread расширяет поток {private DBUtil dbUtil = null;//Включить ли запрос частного логического значения startQuery = true;/** * Функция: соответствующее соединение с базой данных. * * @author Song Lijun* @date 3 июля 2014 г.* @param dbUtil * Соединение с базой данных*/public QueryThread(DBUtil dbUtil) {this.dbUtil = dbUtil;}public void run() { while (true) {try { if (startQuery) {this.dbUtil.query("выберите 1");}// System.out.println(startQuery+" 123");} catch (Exception e) {e.printStackTrace();} наконец {try {Thread.sleep(120000);} catch (InterruptedException e) {e.printStackTrace(); }}}}public void setStartQuery(boolean startQuery) {// System.out.println("startQuery Shut:"+startQuery);this.startQuery = startQuery;}}