創建C3P0數據源,實際開發中直接用JDBC連接數據庫是非常少的,一般使用數據源的形式,C3P0是開源的數據源,實際項目用得很多:
1、增加maven的支持
c3p0 c3p00.9.1.2
root jdbc:mysql://localhost:3306/charts com.mysql.jdbc.Driver root 5 5 5 10 25 5
package com.hexun.utils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; /** * JDBC 的工具類 * * 其中包含: 獲取數據庫連接, 關閉數據庫資源等方法. */ public class JDBCTools { //處理數據庫事務的 //提交事務 public static void commit(Connection connection){ if(connection != null){ try { connection.commit(); } catch (SQLException e) { e.printStackTrace(); } } } //回滾事務 public static void rollback(Connection connection){ if(connection != null){ try { connection.rollback(); } catch (SQLException e) { e.printStackTrace(); } } } //開始事務 public static void beginTx(Connection connection){ if(connection != null){ try { connection.setAutoCommit(false); } catch (SQLException e) { e.printStackTrace(); } } } private static DataSource dataSource = null; //數據庫連接池應只被初始化一次. static{ dataSource = new ComboPooledDataSource("c3p0"); } public static Connection getConnection() throws Exception { return dataSource.getConnection(); } public static void releaseDB(ResultSet resultSet, Statement statement, Connection connection) { if (resultSet != null) { try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } } if (statement != null) { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (connection != null) { try { //數據庫連接池的 Connection 對象進行 close 時 //並不是真的進行關閉, 而是把該數據庫連接會歸還到數據庫連接池中. connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } }