c3p0提供了数据库连接池,话不多说,直接上代码。
package Utils;
import java.beans.PropertyVetoException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.sql.*;
import java.util.ResourceBundle;
import org.apache.log4j.Logger;
public class DBUtil {
static Logger logger=Logger.getLogger(DBUtil.class);
private static final ComboPooledDataSource dataSource;
//开机加载连接池设置
static {
dataSource = new ComboPooledDataSource();
// dbPool为属性文件名,是放在src下,直接用test即可,否则加上包名
ResourceBundle resource = ResourceBundle.getBundle("dbPool");
// 设置连接数,url,驱动,用户名,密码,初始化连接数,最大连接数
dataSource.setJdbcUrl(resource.getString("JdbcUrl"));
try {
dataSource.setDriverClass(resource.getString("Driver"));
} catch (PropertyVetoException e) {
e.printStackTrace();
}
String user1=Base64Util.makeStringToUpOrLow(resource.getString("User"));
String user2=Base64Util.getFromBase64(user1);
dataSource.setUser(user2);
String pwd1=Base64Util.makeStringToUpOrLow(resource.getString("Password"));
String pwd2=Base64Util.getFromBase64(pwd1);
dataSource.setPassword(pwd2);
dataSource.setInitialPoolSize(Integer.valueOf(resource.getString("InitialPoolSize")));
dataSource.setMaxPoolSize(Integer.valueOf(resource.getString("MaxPoolSize")));
dataSource.setMaxIdleTime(Integer.valueOf(resource.getString("MaxIdleTime")));
}
public static void main(String[] args) {
// 从连接池对象中获取连接对象
Connection conn = null;
try {
conn = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
// 执行删除
try {
conn.prepareStatement("insert into ping_new_201706 (external_iP,ISP,wifi_ss) values('sadasdsadas','weqqw','rtyy')").executeUpdate();
//logger.info("1111111111111111");
} catch (SQLException e) {
e.printStackTrace();
}finally {
// 关闭
close(conn, null, null);
}
}
/**
* 从连接池中获取数据库连接
*
* @return
* @throws PropertyVetoException
* @throws SQLException
*/
public static Connection getConnectionFromPool() throws PropertyVetoException, SQLException {
// 从连接池对象中获取连接对象
return dataSource.getConnection();
}
/**
* 关闭非空连接
*
* @param conn
* @param ps
* @param res
*/
public static void close(Connection conn, PreparedStatement ps, ResultSet res) {
try {
if (res != null) {
res.close();
}if (ps != null) {
ps.close();
}if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
做下解释dbpool是配置文件名称,改成自己的名称,设置好自己的配置即可。