一、JDBC操作的步骤
1.导入数据库驱动jar包
2.编写程序
a. 注册驱动(要操作哪种数据库,就要注册哪种数据库的驱动类);
b. 获取连接,连接上数据库
c. 创建SQL执行平台(SQL执行平台提供了执行SQL语句的方法)
d. 执行SQL语句
e. 处理结果
f. 释放资源
二、JDBC存在的问题
1. 重复代码问题,每次操作数据库都需要:
- 注册驱动
- 获取连接
- 释放资源
2. 注册驱动的代码,每次操作数据库都要执行一次,而实际只需要执行一次
3. 硬编码问题,代码中写死了,如果连接的数据库有变化,还需要修改源码:
- 驱动类名
- 数据库地址
- 数据库用户名
- 数据库密码
4. 存在安全漏洞 (最后一问题见四、预编译对象)
三、解决方法
1. 问题的解决思路
- 重复代码问题:提取到一个类,设置成为静态的公用方法,随用随调
- 注册驱动的代码,只需要执行一次:提取到一个类,放到静态代码块中
- 硬编码问题:提取到配置文件中,如果数据库有变化,只需要修改配置文件,不需要修改源码
2. 怎么实现(以模拟登录功能为例)
drop database if exists praDay01;
create database praDay01 character set utf8;
use praDay01;
DROP TABLE IF EXISTS USER;
CREATE TABLE USER(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20),
PASSWORD VARCHAR(50),
NAME VARCHAR(10),
birthday DATE,
age INT,
sex CHAR(1)
) CHARACTER SET = utf8 COLLATE = utf8_general_ci;
INSERT INTO USER(id,username,PASSWORD,NAME,birthday,age,sex) VALUES (NULL, 'xiaohong', 'xiaohong', '小红', '1999-09-09', 20, '男');
INSERT INTO USER(id,username,PASSWORD,NAME,birthday,age,sex) VALUES (NULL, 'xiaolan', 'xiaolan', '小兰', '1997-09-09', 22, '女');
INSERT INTO USER(id,username,PASSWORD,NAME,birthday,age,sex) VALUES (NULL, 'xiaolv', 'xiaolv', '小吕', '1999-09-09', 20, '女');
INSERT INTO USER