JDBC(Java Database Connectivity)是一个用于Java应用程序与关系数据库交互的API(应
用程序编程接口)。它提供了一种标准的方法,允许Java程序通过SQL语句访问和操作数据库中的
数据。
一、JDBC的主要组成部分
1. JDBC驱动程序
JDBC驱动程序主要有四种类型:
(1)Type 1:JDBC-ODBC桥接驱动程序:通过ODBC(开放数据库连接)连接到数据库,
性能较低,目前已不推荐使用。
(2)Type 2:Native-API驱动程序:通过调用特定数据库的本地API来实现连接,通常需
要安装数据库的本地客户端。
(3)Type 3:网络协议驱动程序:通过网络与中间层服务器进行连接,允许使用统一的数据
库接口,但需要额外的中间层应用。
(4)Type 4:薄驱动程序(纯Java驱动程序):完全用Java编写,直接与数据库进行通信,
是现在应用中最常用的驱动类型。
2. DriverManager
此类管理数据库驱动程序的列表,匹配应用程序的连接请求与适当的驱动程序。
3. Connection
此接口提供了与数据库建立通信的方法。它还提供了创建`Statement`、`PreparedStatement`
和`CallableStatement`对象的方法。
4.Statement
此接口用于执行静态SQL语句并返回结果。主要有三种类型的语句:
(1)Statement:通用访问数据库的接口。
(2)PreparedStatement:用于执行预编译的SQL查询,可以使用参数。
(3)CallableStatement:用于执行数据库中的存储过程。
5. ResultSet
此接口保存由SQL查询返回的数据。它提供了迭代结果集的方法。
6. SQLException
此类处理在数据库访问和其他JDBC操作中发生的错误。
二、使用JDBC的基本步骤
1. 加载JDBC驱动程序
通常可以使用 Class.forName("com.mysql.cj.jdbc.Driver") 加载驱动
注:数据库版本在5以上的需要加cj
2. 建立连接
使用 DriverManager.getConnection(url, user, password) 连接到数据库。
3. 创建Statement或PreparedStatement
创建实例以执行SQL查询。
4. 执行查询
使用 executeQuery() 方法执行SELECT语句,或使用 executeUpdate() 方法执行INSERT、UPDATE、DELETE操作。
5. 处理结果
如果返回了ResultSet,则迭代以检索结果。
6. 关闭资源
关闭`ResultSet`、`Statement`和`Connection`对象,以释放资源。
示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBCUtil {
public static void main(String[] args) {
// 1.加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");//反射机制 jdbc 注册驱动/ioc
// 2、创建数据库连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名称?serverTimezone=UTC&useSSL=false", "root", "密码");
// 3、创建statement对象
Statement statement = connection.createStatement();
// 4、定义SQL语句并处理执行(一般数据库的操作绝大多数是DML,其中select需要结果集,其他不需要)
// (1)查询用statement.executeQuery("查询sql语句")方法 执行 sql 语句
resultSet = statement.executeQuery("此为查询sql语句");
boolean result = resultSet.next();//如果查询不到数据 返回 false
// (2)新增、修改和删除用statement.executeUpdate("新增、修改和删除sql语句")方法 执行 sql 语句
int result = statement.executeUpdate("此为新增、修改和删除sql语句"); //返回影响行数 判断是否执行成功
// 5、释放连接(后打开的先关闭)
// (1)查询
resultSet.close();
statement.close();
connection.close();
// (2)新增、修改和删除
statement.close();
connection.close();
}
}