目录
1.JDBC是什么?
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的
2.JDBC的本质是什么?
JDBC是sun公司置顶的一套接口(interface)
而这些接口都存在于java.sql.*包下
我们知道接口都有调用者和实现者,在JDBC中,很明显调用者是我们普通的Java程序员,那么谁是这些接口的实现者呢?
没错,就是各大数据库厂商,对于每一个数据库厂商,例如mysql,oracle,SqlServer等,都必须实现sun公司制定的这套接口,而我们程序员只需要根据自己使用的数据库,调用数据库厂商实现的接口方法即可。
思考:为什么sun公司制定一套JDBC接口呢?
因为每一个数据库的底层实现原理不一样
Oracle数据库有自己的原理
Mysql数据库也有自己的原理
SqlServer数据库也有自己的原理
...
每一个数据库产品都有自己独特的实现原理
原理图如下:
思考:为什么要面向接口编程?
面向接口调用、面向接口写实现类,这都属于面向接口编程
作用:
解耦合:降低程序的耦合度,提高程序的扩展力
多态机制就是非常典型的:面向抽象编程
//建议:
Animal a = new Cat();
Animal a = new Dog();
//不建议:
Dog d = new Dog();
Cat c = new Cat();
3.开发前的准备工作
JDBC开发前的准备工作,先从官网下载对应的驱动jar包
官网下载jar包的地址
这里我们开发分为两种情况
- 普通Java项目
- Maven项目
如果我们创建的是普通的java项目,我们需要将jar包配置到项目中
而如果我们创建的是maven项目,直接在pom.xml文件中添加依赖即可
1.普通的Java项目添加jar包
上面我们下载下来的jar包文件,只需要用到下面这个标红的这个
然后我们在Intellij idea中创建一个普通的java项目JDBCTest
下面是导入jar包的过程:
第一步,创建一个lib文件,将jar包复制进去:
第二步,右键点击该jar包,选择 Add as Library...
第三步,选择Jar Directory
第四步,选择要将jar包导入哪个module,我们选择刚刚创建的JDBCTest
第五步,确定是否成功导入,打开Project Structure...(快捷键Ctrl + Alt + Shift + S)
第六步,点击Libraries,发现已经成功导入了
2.创建Maven项目添加依赖
如果创建的是Maven项目,我们直接在pom.xml文件中添加依赖
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
</dependencies>
对于初学Java的人可能没有学过Maven,但我推荐没有学过Maven的人一定要去把Maven学了,Maven不难,但是对我们项目的帮助却特别大
4.JDBC编程六步(背会熟记)
- 第一步:注册驱动(告诉Java程序,即将连接的是哪个品牌的数据库)
- 第二步:获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭通道)
- 第三步:获取数据库操作对象(专门执行sql语句的对象)
- 第四步:执行sql语句(DQL DML...)
- 第五步:处理查询结果集(只有当第四步执行的select语句的时候,才由第五步处理查询结果集)
- 第六步:释放资源(使用完资源之后一定要关闭资源,Java和数据库属于进程间的通信,开启之后一定要关闭)
5. 具体实现
1.注册驱动
我们首先查看jdk帮助文档,发现有两个方法可以注册驱动
我们查看方法具体的解释,发现这个方法会抛出一个SQLException的异常 ,我们可以用try..catch来捕获异常。
其实我们编写JDBC注册驱动最常用的方法不是registerDriver()方法,最常用的方法是通过反射的类加载过程来注册驱动,这个后面我们会再详细讲解,我们这里首先采用registerDriver的方法来注册驱动
编写代码:
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JDBCTest01 {
public static void main(String[] args) throws SQLException {
try {
//1.注册驱动
Driver driver = new com.mysql.cj.jdbc.Driver();//父类型引用指向子类型对象
DriverManager.registerDriver(driver);
} catch (SQLException e) {
e.printStackTrace();
}
//2.获取连接
//3.获取数据库操作对象
//4.执行sql
//5.处理查询结果
//6.关闭连接
}
}
可以看到这里是 new com.mysql.cj.jdbc.Driver(),那么com.mysql.cj.jdbc.Driver()和com.mysql.jdbc.Driver()有什么区别呢?
简单来说,如果使用的是Mysql6.0之后的版本,必须使用com.mysql.cj.jdbc.Driver(),而如果使用的是Mysql5.0的版本,使用的就是com.mysql.jdbc.Driver()
2.获取连接
我们查看jdk帮助文档,其中有三个方法可以获取连接
我们最常用的是第三个,查看第三个的详细解释