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注入(重要)

小结

相关推荐
am心9 分钟前
企业开发项目流程记录
java
浩子智控15 分钟前
python程序打包的文件地址处理
开发语言·python·pyqt
Jackey_Song_Odd19 分钟前
Part 1:Python语言核心 - 序列与容器
开发语言·windows·python
Elnaij29 分钟前
从C++开始的编程生活(20)——AVL树
开发语言·c++
似水明俊德32 分钟前
12-C#
开发语言·数据库·oracle·c#
hanbr33 分钟前
【C++ STL核心】vector:最常用的动态数组容器(第九天核心)
开发语言·c++
独自破碎E1 小时前
前后端分离+微服务架构下的用户认证
java·面试·架构
hssfscv1 小时前
力扣练习训练2(java)——二叉树的中序遍历、对称二叉树、二叉树的最大深度、买卖股票的最佳时机
java·数据结构·算法
Byron__1 小时前
HashMap面试知识点
java·面试·hash
诺浅2 小时前
聊聊@DSTransactional的坑
java·多数据源·dstransavtional