Bootstrap

JDBC -Java连接数据库详解

1.什么是JDBC?

JDBC(Java Database Connectivity)是Java语言用于与数据库进行交互的API(应用程序接口)。它允许Java应用程序通过标准化的方式连接到各种数据库,并执行各种数据库操作,如查询、更新和删除数据等。通过JDBC,Java应用程序可以使用SQL语句与数据库进行通信,而不必关心底层数据库的具体实现。JDBC提供了一种灵活、可移植的方式,使开发人员能够轻松地编写与数据库交互的Java应用程序。

2.流程

  1. DriverManager类DriverManager 是 JDBC 中的一个类,负责管理 JDBC 驱动程序。它的主要作用是加载并注册数据库的驱动程序。通过调用 getConnection() 方法,DriverManager 可以获取与数据库的连接。

  2. Connection接口Connection 是 JDBC 中的一个接口,表示与数据库的连接。它定义了用于与数据库进行通信的方法,比如创建 Statement 对象、管理事务、关闭连接等。

  3. 具体的Connection实现类Connection 接口的具体实现类由数据库供应商提供的 JDBC 驱动程序实现。当我们通过 DriverManager.getConnection() 方法获取连接时,实际上获得的是数据库驱动程序提供的具体的 Connection 实现类的一个实例。这个实现类负责实现 Connection 接口定义的方法,并管理与数据库的底层通信。

  4. Statement接口及其实现类Statement 接口用于执行静态 SQL 语句,并返回执行结果。它有两个主要的实现类:StatementPreparedStatementStatement 对象用于执行不带参数的 SQL 语句,而 PreparedStatement 对象用于执行预编译的 SQL 语句,可以带有参数,提高了执行效率和安全性。

  5. ResultSet接口ResultSet 接口用于表示 SQL 查询的结果集。当执行查询语句时,StatementPreparedStatement 对象会返回一个 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();


    }
}

 结果展示:

;