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

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.kler.cn/a/448068.html

相关文章:

  • 成方金融科技后端部分笔试题 - 解析
  • Activiti开启流程实例
  • ARP..
  • Qt5HttpServer : Qt官方的HTTP服务器
  • 「Mac畅玩鸿蒙与硬件46」UI互动应用篇23 - 自定义天气预报组件
  • 大数据面试题--企业面试真题
  • Linux export命令
  • Elasticsearch:什么是查询语言?
  • C++ 杨辉三角 - 力扣(LeetCode)
  • 如何制作搞笑配音视频?操作方法
  • 智能电商:API接口如何驱动自动化与智能化转型
  • Yolo11改进策略:主干网络改进|FastVit与Yolo11完美融合,重参数重构Yolo11网络(全网首发)
  • 插入排序与计数排序;数据库的三范式
  • DC-9靶场练习
  • JavaScript 类型转换的意外
  • 数组相关简单算法
  • List直接使用removeAll报错
  • 线性表查找:Python 实现与性能分析
  • 基于UNITY3D的照片墙演示项目技术分享
  • Apache解析漏洞(apache_parsingCVE-2017-15715)
  • 【卡尔曼滤波理论推导与实践】【理论】【3.2/5 卡尔曼增益02】
  • 广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
  • 虚拟现实喷漆训练解决方案,为喷漆行业提供全新高效的培训方式
  • Nginx中Server块配置的详细解析
  • 游戏引擎学习第54天
  • python学习——sort/sorted+lambda表达式实现多级排序