javaweb实训第四天下午——JDBC深入理解(1)

简介: 1.课程介绍1.PreparedStatement介绍;(了解)2.PreparedStatement使用;(掌握) 动态语句对象执行sql语句是动态的3.登录功能4.登录功能的实现方式

1.课程介绍

1.PreparedStatement介绍;(了解)

2.PreparedStatement使用;(掌握) 动态语句对象执行sql语句是动态的

3.登录功能

4.登录功能的实现方式

5.事务介绍;(了解)

6.事务开启/提交/回滚;(掌握)

7.事务使用;(掌握) 银行转账业务

8.拿到主键;(了解)(只针对于自增的)

9.连接池;(了解) 在框架中配置连接参数即可集成(导包)

10.优化工具类(了解)

2. PreparedStatement查询

2.1 回顾jdbc

通过jdbc完成一个增删改查

①建一个表student

   字段 username,password,age,id,intro,sex

   根据表创建一个域对象,domain对象

②写一个dao层,在里面写一个接口

   IStudentDAO

③写一个dao层接口的实现类

20210602095815371.png

④抽取代码JDBCUtil–工具类

20210602095821500.png

完善查询所有:

20210602095825713.png

2.2 PreparedStatement的引入

在使用JDBC的时候,定义sql的时候,里面有个很纠结的问题,拼接字符串不好拼接
,特别是插入和修改更不好拼接;

怎么才能不拼接字符串 – 通过PreparedStatement

2.2.1 PreparedStatement介绍

Statement: 表示静态SQL语句对象.

PreparedStatement:Statement的子接口,==表示预编译SQL语句对象. ==

什么是预编译SQL语句

预编译语句PreparedStatement 是java.sql中的一个接口,它是Statement的子接口。通过Statement对象执行SQL语句时,需要将SQL语句发送给DBMS,由 DBMS首先进行编译后再执行。预编译语句和Statement不同,在创建PreparedStatement 对象时就指定了SQL语句,该语句立即发送给DBMS进行编译。当该编译语句被执行时,DBMS直接运行编译后的SQL语句,而不需要像其他SQL语句那样首先将其编译,在执行。


Api示例:

20210602095937847.png

注意: ?上面不要添加引号, 不要这样写 ‘?’;
后面会自动知道该?表示的是什么类型;

  比如:pstm.setInt(2,110592) 这里可以设置int值,它会自动知道;

2.3 PreparedStatement使用

贾琏欲执事:

但是其中的欲 — 获取欲处理对象

20210602100006104.png

注意的地方:

mysql有个叫SQL_SAFE_UPDATES的变量,为了数据库更新操作的安全性

直接执行:SET SQL_SAFE_UPDATES=0;

①贾琏步骤都是一样,而PreparedStatement是Statement的子接口

  ②问号(?)–相当于占位符(SQL里面的问题),我们使用的时候有没有区分类型?–没有-字符串也不需要特殊加上引号

  ③在拿到语句对象的时候就使用SQL

   Statement st = conn.createStatement();
  PreparedStatement st = conn.prepareStatement(sql);//预编译sql

④在执行的时候不需要传sql;

  ⑤所有占位符,需要给它添加相应的值–

 PreparedStatement对象.setXxxx(位置(从1开始),相应的值)

⑥? 只能放在特定的地方(不能替换关键字表名)–不能放在 select * from ?


PreparedStatement容易出错的地方:


1.占位符字符串千万不要加上引号;

2.加上相应的值的时候,位置,类型,个数必须要完全一致;

3.执行的时候,不要SQL放进来;

st.executeUpdate()执行的是编译之后的语句,如果你把sql放进去,是编译前的sql,里面就会出现问题;


总结: Statement 和 PreparedStatement的区别 Statement在创建语句对象,不需要传入sql; ==statement = connection.createStatement();== PreparedStatement在创建预编译语句对象,在创建的时候,需要传入sql; ==ps = connection.prepareStatement(sql);== 在执行sql语句的时候,Statement 需要传入sql;PreparedStatement在执行sql语句时候,不需要传入sql;

2.4 完善功能

刚才是通过st.setString/st.setInt/setBoolean 等方式设置值,还要一个方法

st.setObject(index,value)来设置;

如下图:

20210602100320748.png

完成插入功能:

20210602100329176.png

完善删除功能

20210602100332796.png

20210602100339953.png

完成查询功能

20210602100344486.png

使用Statement和使用PrepareStatement那种方式更好?

以后都使用PrepareStatement;

2.5 为什么选择PreparedStatement

以后都用PreparedStatement,它有以下这些好处;

2.5.1思路清楚,使用方便

不需要我们去拼接字符串
特别是字段很多的时候,如果用Statement拼字符串。谁用谁知道;

2.5.2 速度,效率更高,更快

PreparedStatemnt的速度比Statement更快

PrepareStatement是预处理语句


我把一条sql发送到数据库之后,数据库会做什么事情?


通过两块完成:Java程序和数据库部分


Java程序会发送sql到数据库:


Statement发送sql

到缓存区查看sql’是否存在,如果存在,直接使用缓存区的sql执行,如果不存在,从①到⑤,这些步骤是很费时间和性能;


①检查sql的安全性;

②解析sql;

③将sql编译成二进制;

④执行sql;

⑤(有的数据库会把这条sql放到缓存中,也就是在数据库里面开辟一块缓存空间)


PreparedStatement 发生sql

20210602100537613.png

Mysql不支持缓存

javaweb实训第四天下午——JDBC深入理解(2)https://developer.aliyun.com/article/1414847?spm=a2c6h.13148508.setting.42.6e1a4f0eQzpjQW

目录
相关文章
|
15天前
|
SQL Java 关系型数据库
【前端学java】JDBC快速入门
【8月更文挑战第12天】JDBC快速入门
14 2
【前端学java】JDBC快速入门
|
16天前
|
Java 数据库连接 网络安全
JDBC数据库编程(java实训报告)
这篇文章是关于JDBC数据库编程的实训报告,涵盖了实验要求、实验环境、实验内容和总结。文中详细介绍了如何使用Java JDBC技术连接数据库,并进行增删改查等基本操作。实验内容包括建立数据库连接、查询、添加、删除和修改数据,每个部分都提供了相应的Java代码示例和操作测试结果截图。作者在总结中分享了在实验过程中遇到的问题和解决方案,以及对Java与数据库连接操作的掌握情况。
JDBC数据库编程(java实训报告)
|
22天前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
40 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
22天前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
49 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
17天前
|
SQL 存储 Java
完整java开发中JDBC连接数据库代码和步骤
该博客文章详细介绍了使用JDBC连接数据库的完整步骤,包括加载JDBC驱动、提供连接URL、创建数据库连接、执行SQL语句、处理结果以及关闭JDBC对象的过程,并提供了相应的示例代码。
|
22天前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
26 6
|
22天前
|
存储 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
24 4
|
22天前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(中)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
21 3
|
2月前
|
SQL Java 数据库连接
什么是JDBC(Java Database Connectivity)?
JDBC(Java Database Connectivity)是Java语言用于连接和操作数据库的一个标准API。它提供了一种统一的方法来访问不同的数据库系统,使得Java程序能够与数据库进行交互,执行SQL语句,并处理查询结果。
16 0
|
2月前
|
SQL 安全 Java
Java面试题:什么是JDBC以及如何在Java中使用它进行数据库操作?
Java面试题:什么是JDBC以及如何在Java中使用它进行数据库操作?
32 0
下一篇
云函数