JDBC 学习笔记 —— JDBC连接数据库、事务、数据库连接池

本文详细介绍了JDBC连接数据库的步骤,包括注册驱动、建立连接、使用Statement和PreparedStatement,批处理操作,事务管理以及数据库连接池的运用,如DBCP和C3P0。讲解了事务的ACID特性,并提供了配置连接池的参数示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDBC

java database connectivity
提供java连接数据库的一套规范。

使用JDBC连接数据库的步骤

  1. 选择数据库:注册驱动程序 DriverManager类
    Driver(mysql)
    OracleDriver(oracle)

  2. 建立连接:返回Connection

  3. 获取发送sql语句的载体:Statement,PreparedStatement,CallableStatement(操作存储过程和函数的)

  4. 发送sql语句
    ddl(数据定义语句): create、alter、drop
    dml(数据操纵语句): insert、update、delete 直接操作数据库的数据
    dql(数据查询语句): select 返回值

    executeQuery():返回ResultSet
    executeUpdate():返回int

  5. 处理结果集:ResultSet
    next()
    getXX(index/name)    index从1开始

  6. 关闭连接 close()

1. Statement

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. 预置语句:PreparedStatement

statement对象有一些需要调整的缺点

  • 写sql语句容易写错
  • 多次操作一组类型的sql语句,效率较低
  • sql语句是拼接的,容易产生sql注入。

则使用PreparedStatement会更好。

查:
在这里插入图片描述

增:
在这里插入图片描述
改:
在这里插入图片描述
删:
在这里插入图片描述

3. 读取配置文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 批处理

  • 设置批处理:pstmt.addBatch();
  • 执行批处理:pstmt.executeBatch();

在这里插入图片描述
在这里插入图片描述

5. 事务

  • 事务的特性:ACID

    • 原子性(Atomicity):事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行
    • 一致性(Consistency):事务在完成时,必须使所有的数据都保持一致状态
    • 隔离性(Isolation):由并发事务所作的修改必须与任何其它并发事务所作的修改隔离
    • 持久性(Durability):事务完成之后,它对于系统的影响是永久性的
  • 默认把 一条sql 语句作为一个事务。
    setAutoCommit(true);

  • 设置把 多条sql 语句作为一个事务:
    try{
    setAutoCommit(false); //false 不自动提交
    update…
    int i=9/0; // 发生异常,则回滚
    update…
    commit(); // 提交
    }catch(){
    rollback(); // 回滚
    }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. 调用存储过程、函数

在这里插入图片描述

7. 数据库连接池

数据库连接池是一个集合,集合中存放着conn对象

7.1 DBCP

  • 初始化连接
    dataSource.initialSize=10
  • 最大空闲连接
    dataSource.maxIdle=20
  • 最小空闲连接
    dataSource.minIdle=5
  • 最大连接数量
    dataSource.maxActive=50
  • 超时等待时间,以毫秒为单位
    dataSource.maxWait=1000

dbcp-config.properties
在这里插入图片描述
DBCPUtil.java
在这里插入图片描述
在这里插入图片描述

7.2 C3P0

c3p0配置文件自动解析完成

  • 如果池中数据连接不够时一次增长多少个
    < property name=“acquireIncrement”>5< /property>
  • 初始化数据库连接池时连接的数量
    < property name=“initialPoolSize”>20< /property>
  • 数据库连接池中的最大的数据库连接数
    < property name=“maxPoolSize”>25< /property>
  • 数据库连接池中的最小的数据库连接数
    < property name=“minPoolSize”>5< /property>

c3p0-config.xml
在这里插入图片描述
C3P0Util.java
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值