这个工具类比较实用,用于读写MySQL数据库,获得连接的一个工具类,同样最好是有一个配置文件c3p0-config.xml,文件名是固定的,最好不要更改,这样更换地址等信息的时候,不用修改源码。这里需要五个工具包(只使用了当时的版本):
c3p0-0.9.1.2.jar
commons-beanutils-1.8.3.jar
commons-dbutils-1.4.jar
commons-logging-1.1.1.jar
mysql-connector-java-5.1.39-bin.jar
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///day38</property>
<property name="user">root</property>
<property name="password">root</property>
</default-config>
</c3p0-config>
含有事务的DataSourse工具类代码
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DataSourceUtils {
private static DataSource ds=new ComboPooledDataSource();
private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
public static DataSource getDataSource(){
return ds;
}
public static Connection getConnection() throws SQLException{
Connection conn = tl.get();
if(conn == null){
conn=ds.getConnection();
tl.set(conn);
}
return conn;
}
public static void beginTransaction() throws SQLException{
Connection conn = getConnection();
conn.setAutoCommit(false);
}
public static void commitAndClose(){
try {
Connection conn = getConnection();
if(conn != null){
conn.commit();
}
closeConn(conn);
} catch(Exception e){
}
}
public static void rollbackAndClose(){
try {
Connection conn = getConnection();
if(conn != null){
conn.rollback();
}
closeConn(conn);
} catch (SQLException e) {
//
}
}
private static void closeConn(Connection conn){
try {
if(conn != null){
conn.close();
}
tl.remove();
} catch (Exception e) {
}
conn = null;
}
}