黑马程序员最新版JavaWeb基础教程,Java web从入门到企业实战完整版_哔哩哔哩_bilibili
简介
使用java语言操作关系型数据库的一套API
Java DataBasr Conectivity Java数据库连接
驱动就是实现类,官方定义一套操作所有关系型数据库的规则,即接口
各个数据库厂商实现这套接口(即驱动),提供数据库驱动jar包
使用这套接口(jdbc)编程,真正执行的代码是驱动jar包中的实现类
一个简单执行步骤
API详解
- DriverManager :驱动管理类
- 注册驱动
- 获取数据库连接
- Connetion
- 获取执行SQL的对象
- 管理事务
事务:要么同时发生,要么都不发生
Java里处理事务异常的机制:try...catch
- Statement
- 执行sql语句
- (Data Definition Language 数据定义语言)用于操作对象及对象本身,这种对象包括数据库,表对象,及视图对象
- create:创建数据库和数据库的一些对象
- drop:删除数据表、索引、触发程序、条件约束以及数据表的权限等
- alter:修改数据表定义及数据属性
- (Data Manipulation Language 数据操控语言) 用于操作数据库对象对象中包含的数据
- insert:向数据库插入一条数据
- delete:删除表中的一条或多条记录
- update:用于修改表中的数据
- (Data Query Language 数据查询语言 )用于查询数据
- select:用于查询表中的数据
- ResultSet
- 封装了DQL查询语句的结果
- 获取查询结果
使用步骤:
- 游标向下移动一行,并判断该行是否有数据:next()
- 获取数据:getXxx(参数)
- PreparedStatement
- 预编译SQL语句并执行;预防SQL注入问题
SQL注入:通过操作输入来修改事先定好的SQL语句,以达到执行代码对服务器进行攻击的方法
步骤
- 获取PreparedStatement对象
- 设置参数值
- 执行SQL
好处
- 预编译SQL,性能更高
预编译:前面的模板固定,参数不确定。即检查SQL语法和编译SQL只需要执行一次
- 防止SQL注入:将敏感字符进行转义
原理
预编译功能开启 :
- useServerPrepStmts=true
- 配置MySQL执行日志(重启mysql服务后生效)
工作原理 :
- 在获取PreparedStatement对象时,将sql语句发送给mysql服务器进行检查和编译
- 执行时就不用再进行这些步骤,速度更快
- 如果sql模板一样,则只需要进行一次检查
数据库连接池
简介
数据库连接池是一个容器,负责分配、管理数据库连接(Connection)如果不使用,那么conn一连接完就失效了。
它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个
释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
实现
Druid数据库连接池