简介
什么是JDBC
JDBC是一套连接和操作数据库的标准、规范。通过提供DriverManager、Connection、Statement、ResultSet等接口将开发人员与数据库提供商隔离,开发人员只需要面对JDBC接口,无需关心怎么跟数据库交互。
几个重要的类
类名
作用
DriverManager
驱动管理器,用于注册驱动,是获取 Connection对象的入口
Driver
数据库驱动,用于获取Connection对象
Connection
数据库连接,用于获取Statement对象、管理事务
Statement
sql执行器,用于执行sql
ResultSet
结果集,用于封装和操作查询结果
prepareCall
用于调用存储过程
使用中的注意事项
记得释放资源。另外,ResultSet和Statement的关闭都不会导致Connection的关闭。
maven要引入oracle的驱动包,要把jar包安装在本地仓库或私服才行。
使用PreparedStatement而不是Statement。可以避免SQL注入,并且利用预编译的特点可以提高效率。
使用例子
需求
使用JDBC对mysql数据库的用户表进行增删改查。
工程环境
JDK:1.8
maven:3.6.1
IDE:sts4
mysql driver:8.0.15
mysql:5.7
主要步骤
一个完整的JDBC保存操作主要包括以下步骤:
注册驱动(JDK6后会自动注册,可忽略该步骤);
通过DriverManager获得Connection对象;
开启事务;
通过Connection获得PreparedStatement对象;
设置PreparedStatement的参数;
执行保存操作;
保存成功提交事务,保存失败回滚事务;
释放资源,包括Connection、PreparedStatement。
创建表
CREATE TABLE `demo_user` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户id',
`name` varchar(16) COLLATE utf8_unicode_ci NOT NULL COMMENT '用户名',
`age` int(3) unsigned DEFAULT NULL COMMENT '用户年龄',
`gmt_create` datetime DEFAULT NULL COMMENT '记录创建时间',
`gmt_modified` datetime DEFAULT NULL COMMENT '记录最近修改时间',
`deleted` bit(1) DEFAULT b'0' COMMENT '是否删除',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_name` (`name`),
KEY `index_age` (`age`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
创建项目
项目类型Maven Project,打包方式jar
引入依赖
junit
junit
4.12
test
mysql
mysql-connector-java
8.0.15
注意:由于oracle商业版权问题,maven并不提供Oracle JDBC driver,需要将驱动包手动添加到本地仓库或私服。
编写jdbc.prperties
下面的url拼接了好几个参数,主要为了避免乱码和时区报错的异常。
路径:resources目录下
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/github_demo?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=true
#这里指定了字符编码和解码格式,时区,是否加密传输
username=root
password=root
#注意,xml配置是&采用&替代
如果是oracle数据库,配置如下:
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@//localhost:1521/xe
username=system
password=root
获得Connection对象
private static Connection createConnection() throws Exception {
// 导入配置文件