/**
-
开源项目及实际开发中使用最多的创建连接池的方式:C3P0
-
@author Cher_du
*/
public class DBUtil4 {
private static ComboPooledDataSource ds = null;
//在静态代码块中创建数据库连接池
static{
try{
//1.通过代码创建C3P0数据库连接池
/*ds = new ComboPooledDataSource();
ds.setDriverClass(“oracle.jdbc.driver.OracleDriver”);
ds.setJdbcUrl(“jdbc:oracle:thin:@localhost:1521:orcl”);
ds.setUser(“learn”);
ds.setPassword(“learn”);
ds.setInitialPoolSize(10);
ds.setMinPoolSize(5);
ds.setMaxPoolSize(20);*/
//2.通过读取C3P0的xml配置文件创建数据源,C3P0的xml配置文件c3p0-config.xml必须放在src目录下
//ds = new ComboPooledDataSource();//使用C3P0的默认配置来创建数据源
ds = new ComboPooledDataSource(“Oracle”);//使用C3P0的命名配置来创建数据源
}catch (Exception e) {
throw new ExceptionInInitializerError(e);
}
}
/**
-
从数据源中获取数据库连接
*/
public static Connection getConnection() throws SQLException{
//从数据源中获取数据库连接
return ds.getConnection();
}
/**
-
释放资源,对应连接-不是关闭掉数据库连接
-
释放的资源包括Connection数据库连接对象,负责执行SQL命令的Statement对象,存储查询结果的ResultSet对象
*/
public static void release(Connection conn,Statement st,ResultSet rs){
if(rs!=null){
try{
//关闭存储查询结果的ResultSet对象
rs.close();
}catch (Exception e) {
e.printStackTrace();
}
rs = null;
}
if(st!=null){
try{
//关闭负责执行SQL命令的Statement对象
st.close();
}catch (Exception e) {
e.printStackTrace();
}
}
if(conn!=null){
try{
//将Connection连接对象还给数据库连接池,而不是关闭掉连接!
conn.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws SQLException {
Connection conn =DBUtil4.getConnection();
System.out.println(conn);
}
}
运行程序可以看到成功通过C3P0获取到数据库连接信息!
下面我们实际使用一下改进后的DBUtil4工具类:
public class TestC3P0_APP {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 获取数据库连接
conn = DBUtil4.getConnection();
stmt = conn.createStatement();
String sql = "insert into emp(empno,ename,sal) values(1200,‘c3p’,1500) ";
int count = stmt.executeUpdate(sql);
if (count > 0) {
System.out.println(“保存成功!”);
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
最后
小编精心为大家准备了一手资料
以上Java高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术
【附】架构书籍
- BAT面试的20道高频数据库问题解析
- Java面试宝典
- Netty实战
- 算法
BATJ面试要点及Java架构师进阶资料
o、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术
【附】架构书籍
- BAT面试的20道高频数据库问题解析
- Java面试宝典
- Netty实战
- 算法
[外链图片转存中…(img-US8rbr3U-1711141173130)]
BATJ面试要点及Java架构师进阶资料
[外链图片转存中…(img-WVtEWYyP-1711141173130)]