JDBC是Sun(现Oracle)定义的Java数据库操作标准接口规范,包含DriverManager、Connection、Statement、PreparedStatement、ResultSet等核心接口,由数据库厂商提供驱动实现,实现跨数据库兼容。

JDBC 就是 Java 中定义数据库操作标准的接口规范。它不提供具体实现,只规定“该有哪些方法、参数怎么传、返回值什么样”,把数据库连接、SQL 执行、结果处理等行为抽象成一组接口,比如 Connection、Statement、ResultSet。
核心接口就是操作标准的骨架
这些接口不是随便写的,而是由 Sun(现 Oracle)统一设计,覆盖数据库交互全流程:
- DriverManager:定义如何通过 URL、用户名、密码获取连接,屏蔽了不同厂商加载驱动的差异
- Connection:规定连接对象必须能创建 Statement、开启/提交/回滚事务、设置超时等
- Statement / PreparedStatement:明确 executeQuery() 返回 ResultSet、executeUpdate() 返回影响行数、支持参数占位符(?)绑定
- ResultSet:约定游标移动方式(next())、按列名或索引取值(getString("id") 或 getString(1))、类型自动转换规则
标准靠“契约”而非“代码”来约束
接口本身没有方法体,只声明签名。例如:
Connection conn = DriverManager.getConnection(url, user, pwd);PreparedStatement ps = conn.prepareStatement("SELECT * FROM user WHERE id = ?");
ps.setInt(1, 1001);
ResultSet rs = ps.executeQuery();
这段代码能跑通,不是因为 JDBC 自己实现了 MySQL 连接逻辑,而是因为 MySQL 驱动(如 mysql-connector-java)里有真正干活的类——它们全部实现了上述接口。Java 程序员只面向接口编码,换 Oracle 驱动只需改 URL 和 JAR 包,其余代码不动。
立即学习“Java免费学习笔记(深入)”;
为什么这样定义才算“标准”
真正的标准体现在三点:
- 所有支持 JDBC 的数据库,都必须提供符合这组接口的驱动实现
- Java 程序调用的永远是 java.sql.* 下的类和方法,不依赖任何厂商特有 API
- 即使底层协议完全不同(MySQL 用自研协议,Oracle 用 TNS),上层 Java 代码感知不到差异
实际开发中怎么用这个标准
你不需要自己去“编写”这套接口规范,而是直接使用 JDK 自带的 java.sql 包,并配合数据库厂商提供的驱动 JAR:
- 引入对应驱动(如 mysql-connector-java-8.3.0.jar)
- 确保驱动类(如 com.mysql.cj.jdbc.Driver)在类路径中(现代 JDBC 4.0+ 可自动加载)
- 严格按 Connection → Statement/PreparedStatement → ResultSet 流程编码
- 所有异常统一捕获 SQLException,不写 MySQLException 或 OracleSQLException
这套标准的价值,不在语法多炫酷,而在让数据库操作从“每换一个库重学一套”变成“一次学会,到处可用”。


















