当前位置: 首页 > news >正文

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

小结

http://www.lryc.cn/news/507684.html

相关文章:

  • electron-vite【实战】自定义标题栏【组件封装】(含异形标题栏,指定区域拖拽,窗口置顶,窗口最小化,窗口最大化,取消最大化,隐藏窗口到托盘等)
  • vue2 项目webpack 4升5
  • 前端开发性能监控中的数据采集与性能调优方法
  • S32K324 Stack异常分析及解决方案
  • [创业之路-202]:任正非管理华为的思想与毛泽东管理党、军队、国家的思想的相似性与差异性
  • SAP PP ECN CSAP_MAT_BOM_MAINTAIN
  • html中实用标签dl dt dd(有些小众的标签 但是很好用)
  • ONES 功能上新|ONES Copilot、ONES Wiki 新功能一览
  • 实现Python将csv数据导入到Neo4j
  • QML Rectangle组件
  • uniapp开发app,cover-view不能隐藏,使用v-if,v-show都不行的解决办法
  • 用adb命令给APP做压力测试,有什么不同?
  • netcore 集成Prometheus
  • 同城外卖系统源码扩展指南:搭建海外外卖APP平台详解
  • JavaScript 中常见内置对象的知识点及示例总结
  • CSSmodule的作用是什么
  • python\shell\c++语法对比
  • 优先队列【东北大学oj数据结构9-3】C++
  • 圣诞快乐(h5 css js(圣诞树))
  • 基于MATLAB的图像增强
  • 大数据之Hbase环境安装
  • javaEE--计算机是如何工作的-1
  • vue.js 指令的修饰符
  • 基于java web在线商城购物系统源码+论文
  • Autosar入门_架构(Architecture)
  • Altair: 轻松创建交互式数据可视化
  • APM32F411使用IIS外设驱动es8388实现自录自播
  • RabbitMQ消息队列的笔记
  • JAVA没有搞头了吗?
  • 【线性代数】理解矩阵乘法的意义(点乘)