java基础——JDBC
JDBC简介
JDBC概念:
- JDBC就是使用Java语言操作关系型数据库的一套API
- 全称:(Java DataBase Connectivity)Java数据库连接
JDBC本质:
- 官方(SUN公司)定义的一套操作所有关系型数据库的规则,即接口
- 各个数据库产商去实现这套接口,提供数据库驱动jar包
- 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类
JDBC的好处:
- 各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发
- 可随时替换底层数据库,访问数据库的java代码基本不变
JDBC的使用
-
注册驱动器
Class.forName("com.mysql.cj.jdbc.Driver");
-
获取数据库连接
Connection conn =DriverManager。getConnection(url,name,password);
-
定义SQL语句
insert into stu(NAME) values('李四');
-
获取执行SQL对象
Statement stmt = conn.createStatement();
-
执行SQL语句
stmt.executeUpdate(sql)
JDBC API 详解
DriverManager
- DriverManager(驱动管理类)作用:
- 注册驱动
- 获取数据库连接
ResultSet
- ResultSet(结果集对象)作用:
- 封装了DQL查询语句的结果
ResultSet stmt executeQuery(Sql); // 执行DQL语句,返回ResultSet对象
- 获取查询结果
boolean next(); //(1)将光标从当前位置向前移动一行 (2)判断当前行是否为有效行
返回值: - true:有效行,当前行有数据
- false:无效行,当前行没有数据
xxx getXxx(参数):获取数据
- xxx:数据类型;如:int getInt(参数); String getString(参数)
- 参数:
- int:列的编号,从1开始
- String:列的名称
PreparedStatement
- PreparedStatement作用:
- 预编译SQL语句并执行:预防SQL注入问题
- SQL注入
- SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法
① 获取PreparedStatement对象
// SQL语句中的参数值,使用?占位符代替
String sql = "select * from user where username = ? and password = ?"
// 通过Connection对象获取,并传入对应的sql语句
PreparedStatement pstmt = conn.prepareStatement(sql);
② 设置参数值
PreparedStatement对象:SetXxx(参数1,参数2):给?赋值
- Xxx:数据类型; 例如setInt(参数1,参数2)
- 参数1:?的位置编号(从1开始)
- 参数2:?的值
③ 执行SQL
executeUpdate(); / excuteQuery:不需要传递sql
PreparedStatement原理
- PreparedStatement好处:
- 预编译SQL,性能更高
- 防止SQL注入:将敏感字符进行转义
① PreparedStatement 预编译功能开启:useServerPrepStmts = true
② 配置MySQL执行日志(重启mysql服务后生效)
log-output-FILE
general-log=1
general_log_file="D:\mysql.log"
slow-query-log=1
slow_query_log_file="D:\mysql_slow.log"
long_query_time=2
- PreparedStatement原理:
- 在获取PreparedStatement对象时,将sql语句发送给mysql服务器进行检查,编译(这些步骤很耗时)
- 执行时就不用再进行这些步骤了,速度很快
- 如果sql模板一样,则只需要进行一次检查、编译
数据库连接池
数据库连接池简介
- 数据库连接池是个容器,负责分配。管理数据库连接(Connection)
- 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
- 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
- 好处:
- 资源重用
- 提升系统响应速度
- 避免数据库连接遗漏
数据库连接池实现
-
标准接口:DataSource
- 官方(SUN)提供的数据库连接池标准接口,由第三方组织实现此接口。
- 功能:获取连接
Connection getConnection()
-
常见的数据库连接池:
- DBCP
- C3P0
- Druid
-
Druid(德鲁伊)
- Druid连接池是阿里巴巴的数据库连接池项目
- 功能强大,性能优秀,是Java语言最好的数据库连接池之一
本文来自博客园,作者:maplerain,转载请注明原文链接:https://www.cnblogs.com/maplerain/p/16698209.html 博主B站