9.17 [MySQL] JDBC(五大流程).JDBC增删改查操作.抽取工具类.PreparedSatement.解决SQL注入问题

JDBC(五大流程)

注册驱动

获取连接(具备了连接数据库的条件)

就是通过驱动管理器里的驱动程序,连接数据库,连接数据库完成,就会返回Connection对象
在这里插入图片描述

获取发送SQL语句对象(交通工具)

在这里插入图片描述

处理结果集

索引从1开始

释放资源

在这里插入图片描述

完成JDBC增删改查操作

向数据库增加数据

在这里插入图片描述

向数据库修改数据

在这里插入图片描述

从数据库根据ID删除数据

在这里插入图片描述

从数据库根据ID查询某条数据

在这里插入图片描述

抽取工具类

1.new一个配置文件

在这里插入图片描述

2.使用单例设计模式来加载配置文件

在这里插入图片描述

3.封装数据库基类BaseDao

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

JDBC预处理对象(PreparedSatement)

PreparedStatement是Statement接口的子接口

PreparedSatement的执行原理

我们写的SQL语句让数据库执行,数据库不是直接执行SQL语句字符串。和Java一样,数据库需要执行编译后的SQL语句(类似Java编译后的字节码文件)。

1、Statement 对象每执行一条SQL语句都会先将这条SQL语句发送给数据库编译,数据库再执行。
在这里插入图片描述
上面2条SQL语句我们可以看到大部分内容是相同的,只是数据略有不一样。数据库每次执行都编译一次。
如果有1万条类似的SQL语句,数据库需要编译1万次,执行1万次,显然效率就低了

2、 prepareStatement() 会先将SQL语句发送给数据库预编译。 PreparedStatement 会引用着预编译后的结果。
可以多次传入不同的参数给 PreparedStatement 对象并执行。相当于调用方法多次传入不同的参数。
在这里插入图片描述
上面预编译好一条SQL,2次传入了不同的参数并执行。如果有1万条类似的插入数据的语句。数据库只需要预编译一次,传入1万次不同的参数并执行。减少了SQL语句的编译次数,提高了执行效率。

PreparedSatement的好处

  1. prepareStatement() 会先将SQL语句发送给数据库预编译。 PreparedStatement 会引用着预编译后的结果。
    可以多次传入不同的参数给 PreparedStatement 对象并执行。减少SQL编译次数,提高效率。
  2. 安全性更高,没有SQL注入的隐患。(改善登录案例)
  3. 提高了程序的可读性

PreparedStatement 的使用

在这里插入图片描述

解决SQL注入问题

我们让用户输入的密码和SQL语句进行字符串拼接。用户输入的内容作为了SQL语句语法的一部分,改变了原有SQL真正的意义,以上问题称为SQL注入。 要解决SQL注入就不能让用户输入的密码和我们的SQL语句进行简单的字符串拼接

使用字符串拼接出现的问题

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

使用Satement的子类PreparedSatement来解决

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

使用工具类来执行操作

在这里插入图片描述

插入一条数据

在这里插入图片描述

修改数据

在这里插入图片描述

删除数据

在这里插入图片描述

分页查询

在这里插入图片描述

模糊查询

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值