1.什么是JDBC?
JDBC(Java Database Connectivity)是Java语言用于与数据库进行交互的API(应用程序接口)。它允许Java应用程序通过标准化的方式连接到各种数据库,并执行各种数据库操作,如查询、更新和删除数据等。通过JDBC,Java应用程序可以使用SQL语句与数据库进行通信,而不必关心底层数据库的具体实现。JDBC提供了一种灵活、可移植的方式,使开发人员能够轻松地编写与数据库交互的Java应用程序。
2.流程
-
DriverManager类:
DriverManager
是 JDBC 中的一个类,负责管理 JDBC 驱动程序。它的主要作用是加载并注册数据库的驱动程序。通过调用getConnection()
方法,DriverManager
可以获取与数据库的连接。 -
Connection接口:
Connection
是 JDBC 中的一个接口,表示与数据库的连接。它定义了用于与数据库进行通信的方法,比如创建Statement
对象、管理事务、关闭连接等。 -
具体的Connection实现类:
Connection
接口的具体实现类由数据库供应商提供的 JDBC 驱动程序实现。当我们通过DriverManager.getConnection()
方法获取连接时,实际上获得的是数据库驱动程序提供的具体的Connection
实现类的一个实例。这个实现类负责实现Connection
接口定义的方法,并管理与数据库的底层通信。 -
Statement接口及其实现类:
Statement
接口用于执行静态 SQL 语句,并返回执行结果。它有两个主要的实现类:Statement
和PreparedStatement
。Statement
对象用于执行不带参数的 SQL 语句,而PreparedStatement
对象用于执行预编译的 SQL 语句,可以带有参数,提高了执行效率和安全性。 -
ResultSet接口:
ResultSet
接口用于表示 SQL 查询的结果集。当执行查询语句时,Statement
或PreparedStatement
对象会返回一个ResultSet
对象,其中包含了查询结果的数据。通过ResultSet
对象,我们可以遍历结果集,获取查询结果的各个行和列的数据。
3.项目搭建
准备数据库。
创建学生表
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
class VARCHAR(50) NOT NULL,
age INT NOT NULL,
score FLOAT
);
INSERT INTO students (name, class, age, score) VALUES ('Alice', 'Class A', 20, 85.5);
INSERT INTO students (name, class, age, score) VALUES ('Bob', 'Class B', 21, 78.2);
INSERT INTO students (name, class, age, score) VALUES ('Charlie', 'Class A', 19, 92.0);
INSERT INTO students (name, class, age, score) VALUES ('David', 'Class C', 22, 79.8);
INSERT INTO students (name, class, age, score) VALUES ('Eva', 'Class B', 20, 88.9);
4.下载驱动包注意你的Mysql版本。我使用8.0以上的。
5.创建java项目。
一个空项目,创建一个lib文件夹,把上面的jar包放进去。
讲lib目录设置为仓库
package com.xugong;
import com.mysql.jdbc.Driver;
import javax.naming.spi.DirStateFactory;
import java.sql.*;
public class Test_JDBC {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取连接对象
//DriverManager.getConnection();
String url = "jdbc:mysql://localhost:3306/test_jdbc";
String username = "root";
String password = "123456";
Connection connection = DriverManager.getConnection(url, username, password);
//3.获取执行sql语句的对象
Statement statement = connection.createStatement();
//4.编写sql语句,执行语句,接收结果
String sql = "select name,class,age,score from students";
ResultSet resultSet = statement.executeQuery(sql);
//5.处理结果:遍历result结果集
while(resultSet.next()){
String name = resultSet.getString("name");
String aClass = resultSet.getString("class");
int age = resultSet.getInt("age");
float score = resultSet.getFloat("score");
System.out.println(name+"\t"+aClass+"\t"+age+"\t"+score);
}
//6.释放资源
resultSet.close();
statement.close();
connection.close();
}
}
结果展示: