Java开发基础-JDBC-基本使用步骤—06,mysqlsql优化面试题

文章介绍了在Java项目中使用C3P0创建数据库连接池的方法,包括代码配置和通过XML文件,以及如何获取、管理和释放数据库连接。此外,还提到了Java开发者的学习资源和架构技术的重要性。
摘要由CSDN通过智能技术生成

/**

  • 开源项目及实际开发中使用最多的创建连接池的方式: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开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

最后

小编精心为大家准备了一手资料

以上Java高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术

【附】架构书籍

  1. BAT面试的20道高频数据库问题解析
  2. Java面试宝典
  3. Netty实战
  4. 算法

BATJ面试要点及Java架构师进阶资料

o、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术

【附】架构书籍

  1. BAT面试的20道高频数据库问题解析
  2. Java面试宝典
  3. Netty实战
  4. 算法

[外链图片转存中…(img-US8rbr3U-1711141173130)]

BATJ面试要点及Java架构师进阶资料

[外链图片转存中…(img-WVtEWYyP-1711141173130)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值