創建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();
}
}
}
}