java全栈day18--Web后端实战(java操作数据库2)

前言:在上节入门程序当中我们见到了JDBC所提供的API,本节来详细说明一下。

一、JDBC--API详解

1.1DriverManager(驱动管理器)

回顾:作用获取连接,调用它里面的getConnection。即如下

作用

1.注册驱动解析

思考: 注册驱动跟DriverManager有什么关系?

解答:根据注册驱动里面的核心(原理)。其实注册驱动严格来说需要调用DriverManager里面的一个方法叫DriverManager.**registerDriver(...),**但是我们只调用class.forname将指定的类加载在JDM当中,就完成注册驱动了,没有调用上面那个代码。因为Driver类源码里面有个静态方法包含了,这个静态方法在类加载的时候就运行了。

补充:class.forname可以省略的

运行结果

思考:这又是为啥呢?咱们又省了一步

首先精确找到咱们引入的jar包

确定后发现驱动类

往上走能找到一个META-INF文件夹,其中包含了咱们需要的内容。在java当中提供了一个机制,如果你在jar包当中定义了一个META-INT文件,下面有个services,然后这块通过它的接口名字定义了这么一个文件的话,它会自动加载到这个文件当中所定义的那个类。(前提的需要jar包中定义了这个文件才能用)(有点绕,建议还是不省略哈哈)

2.获取数据库连接解析

小结

1.2 Connection(连接对象) & Statement(执行对象)

Connection 的作用:获取执行 SQL 的对象

1.执行普通 SQL 对象 Statement : connection.createStatement()

2.执行预编译 SQL 对象 PreparedStatement : connection.preparedStatement()

Statement 的作用:执行 SQL

1.执行 DDL 、 DML 语句: executeUpdate(sql) ; 如果是执行 DML 语句完毕,返回值 int 代表 DML 语句影响的函数。

小结

2.执行 SQL 语句: executeQuery(sql) ; 返回值为 ResultSet ,里面封装了查询结果。

1.3 ResultSet (结果集)

以需求为例来演示

如何获取里面的数据

扩展:我们模拟登录操作,不可能把账户密码写死,应该是用户输入是什么,我们就根据什么来查

修改如下(这两个注解我忘记了,需要大家课外补充)

小结

1.4 PreparedStatement

作用

预编译 SQL 语句并执行,可以防止 SQL 注入问题。

什么是SQL注入?

是sql攻击当中的一种,是常见的问题。

SQL 注入

通过控制输入来修改事先定义好的 SQL 语句,以达到执行代码对服务器进行攻击的方法。

模拟演示,第一次接触有点东西说不准

先导入两个jar包,再运行jar包

根据如图数据来登录

账户密码正确能正常登录

如果输入一个错误的账户密码呢

也是成功登录,这是为什么呢,将账户密码代入看看

解决SQL注入(重要)

小结

相关推荐
rgeshfgreh7 分钟前
Spring事务传播机制深度解析
java·前端·数据库
无名-CODING8 分钟前
Java Spring 事务管理深度指南
java·数据库·spring
xiaolyuh1238 分钟前
Spring MVC Bean 参数校验 @Validated
java·spring·mvc
全栈小精灵8 分钟前
Winform入门
开发语言·机器学习·c#
心静财富之门8 分钟前
退出 for 循环,break和continue 语句
开发语言·python
txinyu的博客11 分钟前
map和unordered_map的性能对比
开发语言·数据结构·c++·算法·哈希算法·散列表
蕨蕨学AI15 分钟前
【Wolfram语言】45.2 真实数据集
java·数据库
Mr -老鬼26 分钟前
Rust适合干什么?为什么需要Rust?
开发语言·后端·rust
予枫的编程笔记29 分钟前
【Java集合】深入浅出 Java HashMap:从链表到红黑树的“进化”之路
java·开发语言·数据结构·人工智能·链表·哈希算法
ohoy35 分钟前
RedisTemplate 使用之Set
java·开发语言·redis