Unduh paket ketergantungan: http://xiazai.VeVB.COM/201407/tools/java-db-dependency(VeVB.COm).rar
Kode sumber kelas koneksi database:
paket 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;impor java.util.Collections;impor java.util.HashMap;impor java.util.List;impor java.util.Map;impor org.apache.commons.dbcp.ConnectionFactory;impor org.apache.commons.dbcp.DriverManagerConnectionFactory;impor org.apache.commons.dbcp.PoolableConnectionFactory;impor 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;impor org.apache.commons.pool.impl.GenericObjectPool;/** * Kelas komprehensif untuk menghubungkan ke database. </br> * Tergantung pada paket jar: paket commons.dbcp-1.4, commons.dbutils-1.3, commons.pool-1.5.4. * * @penulis Lagu Lijun* @tanggal 3 Juli 2014*/public class DBUtil {private String dri = null;private String url = null;private String nama pengguna = null;private String password = null;private String poolName = null / / Nama kumpulan koneksi private ObjectPool connectionPool = null; // Kumpulan koneksi // Kelas kueri terjadwal yang sesuai private QueryThread queryThread = null; Fungsi: Pembuat * * @penulis Lagu Lijun * @tanggal 3 Juli 2014 * @param dri * Nama kelas lengkap driver, contoh: com.mysql.jdbc.Driver. * @param url * Koneksi url database, contoh: * "jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8" * @param userName * Nama pengguna database, contoh: root * @param password * Password database, contoh: abc * @param poolName * Nama kumpulan koneksi database yang dibuat, seperti mypool. Perhatikan bahwa nama ini tidak dapat diulang untuk wadah web. */DBUtil publik(String dri, String url, String namapengguna, Kata sandi string,String poolName) {ini.dri = dri;ini.url = url;ini.namapengguna = namapengguna;ini.kata sandi = kata sandi;ini.poolName = nama kolam ;}/** * Jalankan sql. * * @param conn * Koneksi * @param pstm * PreparedStatement * @return int Baris yang terpengaruh terkait dengan eksekusi sql. * @throws SQLException * @author Song Lijun* @date 3 Juli 2014*/public int mengeksekusi(Connection conn, PreparedStatement pstm)throws SQLException {coba {return pstm.executeUpdate();} akhirnya {Close(conn);} } /** * Kueri sql. * * @param conn * Koneksi * @param pstm * PreparedStatement * @return List<Map<String,Object>> Kumpulan hasil kueri * @throws SQLException * @author Song Lijun * @tanggal 3 Juli 2014 */Daftar publik <Peta <String, Object>> query (Sambungan, PreparedStatement pstm) melempar SQLException {coba {return resultSetToList(pstm.executeQuery());} akhirnya {Close(conn);}}/** * Fungsi: ResultSet diubah menjadi List<Map<String,Object>> * * * @param rs * ResultSet kumpulan data asli * @ return List<Map<String,Object>> * @throws java.sql.SQLException * @penulis Lagu Lijun* @tanggal 3 Juli 2014*/Daftar Pribadi<Peta<String, Objek>> resultSetToList(ResultSet rs)throws java.sql.SQLException {if (rs == null)return Collections.EMPTY_LIST;ResultSetMetaData md = rs.getMetaData() ; / Dapatkan informasi struktural dari kumpulan hasil (rs), seperti jumlah field, nama field, dll. int ColumnCount = md.getColumnCount(); // Mengembalikan jumlah kolom dalam objek ResultSet ini Daftar<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Map<String, Object> rowData = HashMap baru<String, Objek>();sementara (rs.next()) {rowData = HashMap baru<String, Objek>(columnCount);for (int i = 1; i <= ColumnCount; i++) {rowData.put(md.getColumnName(i), rs.getObject(i));}list.add(rowData);}return daftar;}/** * Kueri pernyataan sql. * * @param sql * Pernyataan sql yang dieksekusi * @return List<Map<String,Object>> * @throws SQLException * @author Song Lijun* @date 3 Juli 2014 */public List<Map<String, Object >> query(String sql) melempar SQLException {List<Map<String, Object>> results = null;Connection conn = null;coba {conn = getConnection();QueryRunner qr = new QueryRunner();results = qr.query(conn, sql, new MapListHandler());} akhirnya {Close(conn);}mengembalikan hasil;}/** * Kueri sql berdasarkan pernyataan parameter * * @param sql * pernyataan sql * @param param * parameter * @return Daftar<Map<String,Object>> * @throws SQLException * @author Song Lijun* @tanggal 3 Juli 2014*/public List<Map<String, Object>> query(String sql, Object param)throws SQLException {List < Peta<String, Objek>> hasil = null;Connection conn = null;coba {conn = getConnection();QueryRunner qr = new QueryRunner();results = (Daftar<Map<String, Object>>) qr.query(conn, sql, param,new MapListHandler());} catch (SQLException e) {e.printStackTrace();} akhirnya {Tutup (sambungan);}mengembalikan hasil;}/** * Jalankan pernyataan sql* * @param sql * Pernyataan sql yang dieksekusi* @return Baris yang terpengaruh* @throws Pengecualian * @penulis Lagu Lijun* @tanggal 3 Juli 2014*/public int mengeksekusi(String sql) melempar Pengecualian {Connection conn = getConnection();int baris = 0;coba {QueryRunner qr = new QueryRunner(); baris = qr.update(sambungan, sql);} akhirnya {Close(conn);}return baris;}/** * Jalankan pernyataan sql dengan parameter* * @param sql * Pernyataan sql yang dieksekusi* @param params * Parameter* @return Mengembalikan baris yang terpengaruh* @throws Exception * @ penulis Lagu Lijun* @tanggal 3 Juli 2014*/public int mengeksekusi(String sql, Objek[] params) memunculkan Pengecualian {Connection conn = getConnection();int baris = 0;coba {QueryRunner qr = new QueryRunner();rows = qr.update(conn, sql, params);} akhirnya {Close(conn);}kembalikan baris;}/ ** * Tutup koneksi * * @param conn * @throws SQLException * @author Song Lijun * @date 3 Juli 2014*/public void Close(Connection conn) throws SQLException {if (conn != null) {conn.close();}DbUtils.closeQuietly(conn);}/** * Mulai kumpulan koneksi* * @ penulis Song Lijun* @tanggal 3 Juli 2014*/private void StartPool() {coba {Class.forName(dri);} catch (ClassNotFoundException e1) {e1.printStackTrace();}if (connectionPool != null) {ShutdownPool();}coba {connectionPool = new GenericObjectPool(null);ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(url, nama pengguna, kata sandi);PoolableConnectionFactory poolableConnectionFactory = baru 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(nama pool, poolableConnectionFactory.getPool());} catch (Exception e) {e.printStackTrace();}//Buka program kueri queryThread = new QueryThread(this);queryThread.start();}/** * Tutup kumpulan koneksi * * @penulis Lagu Lijun* @tanggal 3 Juli 2014*/private void ShutdownPool() {coba {PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:Apache:commons:dbcp:");driver.closePool(poolName);//Tutup kueri terjadwal queryThread.setStartQuery(false);} catch (SQLException e) {e.printStackTrace() ;}}/** *Dapatkan koneksi* * @return * @penulis Lagu Lijun* @tanggal 3 Juli 2014*/Koneksi tersinkronisasi publik getConnection() {Connection conn = null;try {if (connectionPool == null)StartPool();conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:"+ poolName) ;} catch (Pengecualian e) {e.printStackTrace();}return conn;}}/** * Ketika kumpulan koneksi dimulai, maka secara otomatis akan menanyakan database secara teratur untuk mencegah waktu koneksi database habis. * * @penulis Lagu Lijun* @tanggal 3 Juli 2014*/class QueryThread extends Thread {private DBUtil dbUtil = null;//Apakah akan mengaktifkan kueri private boolean startQuery = true;/** * Fungsi: Koneksi database yang sesuai. * * @penulis Lagu Lijun* @tanggal 3 Juli 2014* @param dbUtil * Koneksi database*/public QueryThread(DBUtil dbUtil) {this.dbUtil = dbUtil;}public void run() {sementara (benar) {coba { if (startQuery) {ini.dbUtil.query("pilih 1");}// System.out.println(startQuery+" 123");} catch (Exception e) {e.printStackTrace();} akhirnya {coba {Thread.sleep(120000);} catch (InterruptedException e) {e.printStackTrace(); }}}}public void setStartQuery(boolean startQuery) {// System.out.println("startQuery tutup:"+startQuery);this.startQuery = startQuery;}}