JDBC.

本文介绍了Java使用JDBC与数据库交互的基本步骤,包括加载驱动、建立连接、执行SQL(Statement与PreparedStatement对象)、处理结果集、事务管理和数据库连接池。重点强调了PreparedStatement的优势在于防止SQL注入并提高效率。同时,提到了常用的数据库连接池实现如DBCP和C3P0,并指出使用连接池可以优化资源管理。
摘要由CSDN通过智能技术生成

10 JDBC

10.1 JDBC

在这里插入图片描述
程序会通过数据库驱动和数据库打交道

SUN公司为了简化开发人员的(对数据库的统一)操作,提供了一个(Java操作数据库的)规范,俗称JDBC
这些规范的实现由具体的厂商去做
对于开发人员来说,只需要掌握JDBC接口的操作即可
在这里插入图片描述

需要的包:
java.sql
javax.sql
还有一个数据库驱动包 mysql-connector-java-5.1.47.jar

10.2 JDBC项目

创建测试数据库

在这里插入图片描述

  1. 创建一个普通项目
  2. 导入数据库驱动(新建lib,将驱动移进去,然后右击lib)
    在这里插入图片描述
  3. 编写测试代码
    在这里插入图片描述

步骤总结:

  1. 加载驱动
  2. 连接数据库 DriverManger
  3. 获得返回的结果集
  4. 释放连接

URL

String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true";

//mysql -- 3306
// 协议://主机地址:端口号/数据库名?参数1&参数2&参数3

Statement 执行SQL的对象 PrepareStatement

statement.executeQuery();  查询操作返回ResultSet
statement.execute();    // 执行任何SQL
statement.executeUpdate(); //更新、插入、删除。  都是用这个,返回一个受影响的行数

ResultSet 查询的结果集:封装了所有的查询结果

获得指定的数据类型

在不知道列类型的情况下 用:
resultSet。getObject();

如果知道列的类型就是用指定的类型,比如:
resultSet。getInt();

遍历,指针

resultSet.beforeFirst();   //移动到最前面
resultSet。afterLast(): //移动到最后面
。。。. next();    移动到下一个数据
           。previous(); 移动到前一行
           。absolute(row)移动到指定行

释放资源

resultSet.close();
statement.close();
connection.close();  

10.3 statement对象

jdbc中的statement对象用于想数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可

增删改都是一样的格式,都用的executeUpdate,只是sql语句不同
在这里插入图片描述
改则不一样虽然也可以用executeUpdate,但是效率会低,所以用executeQuery
在这里插入图片描述
将固定的步骤提取工具类,之后再编写会简化很多:
删除:
在这里插入图片描述
查询:
在这里插入图片描述

10.4 preparedStatement对象

PreparedStatement 可以防止SQL注入,效率更高好。
插入:
在这里插入图片描述
删除:
在这里插入图片描述
更改:
在这里插入图片描述
查询;
在这里插入图片描述
防止SQL注入:
在这里插入图片描述

10.4 事务

  1. 开启事务 conn.setAutoCommit(false);
  2. 一组业务执行完毕,提交事务
  3. 可以在catch语句中显示的定义 回滚语句,但默认失败就会回滚

代码:
在这里插入图片描述

10.5 数据库连接池

数据库连接–执行完毕–释放
连接–释放 十分浪费系统资源
池化技术:准备一些预先的资源,过来就连接预先准备好的

最小连接数
最大连接数
等待超时

编写连接池,实现一个接口 DataSource

开源数据源实现(拿来即用)

DBCP
C3P0
Druid:阿里巴巴

使用这些数据库连接池之后,我们在项目开发中就不需要编写连接数据库的代码了!

DBCP

需要的jar包:
commons-dbcp-1.4、commons-pool-1.6

C3P0

c3p0-0.9.55、mchange-commons-java-0.2.19

结论

无论使用什么数据源,结论还是一样的,DataSource接口不会变,方法就不会变

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值