JDBC 是Java 数据库连接,即 Java DataBase Connectivity。JDBC 可让Java 通过程序操作关系型数据库,可基于驱动程序实现与数据库的连接与操作。JDBC 有统一的API ,提供一致的开发过程。其功能强大,执行效率高,可处理海量数据。

开发准备

在Navicat 中新建一个数据库,注意字符集 的选择,如下图所示:

然后运行 SQL 文件创建的表如下图:

接着在mysql 官网下载 mysql8驱动程序如下:

实际开发

1,加载并注册JDBC 驱动

在idea 中创建一个新工程,然后在工程名上右键,新建一个目录“lib”,用于添加所需依赖:

接着在idea中,执行 File -> Project Structure -> Modules -> Dependencies ,接着点击右边的 ”+“ ,添加mysql 驱动依赖,如下图所示:

然后就可以通过如下语句在程序中加载并注册JDBC 驱动:

Class.forName("com.mysql.cj.jdbc.Driver");

Class.forName 用于加载指定的JDBC 驱动类,其本质是通知JDBC 注册这个驱动类。

2,创建数据库连接

通过如下程序语句创建数据库连接:

Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/imooc?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai",
                    "root", "123456"
            );
  • Connection 对象用于JDBC 与数据库的网络通信对象,所有数据库的操作都是建立在Connection 基础上。
  • DriverManager 用于注册 / 管理JDBC 驱动程序,DriveManager.getConnection(连接字符串,用户名,密码),其返回值Connection 对象,对应数据库的物理网络连接。

3,创建Statement 对象

通过如下程序语句实现Statement 对象的创建:

Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("select * from employee where dname='研发部'");

说明:ResultSet 表示结果集。

4,遍历查询结果

如下程序语句可以实现结果集的遍历查询:

while (rs.next()) {
                Integer eno = rs.getInt(1); //eno
                String ename = rs.getString("ename");
                Float salary = rs.getFloat("salary");
                String dname = rs.getString("dname");
                System.out.println(dname + "-" + eno + "-" + ename + "-" + salary);
            }

5,关闭连接,释放资源

关闭连接,这里我们可以直接通过语句:

 conn.close();

即可,因为底层的连接被关闭,其他的连接自然就被关闭了。

完整代码实现

package com.imooc.jdbc.sample;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 * 标准JDBC操作五步骤
 */
public class StandardJDBCSample {
    public static void main(String[] args) {
        Connection conn = null;
        try {
            //1. 加载并注册JDBC驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2. 创建数据库连接
            conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/imooc?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai",
                    "root", "123456"
            );
            //3. 创建Statement对象
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("select * from employee where dname='研发部'");
            //4. 遍历查询结果
            while (rs.next()) {
                Integer eno = rs.getInt(1); //eno
                String ename = rs.getString("ename");
                Float salary = rs.getFloat("salary");
                String dname = rs.getString("dname");
                System.out.println(dname + "-" + eno + "-" + ename + "-" + salary);
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            try {
                if (conn != null && conn.isClosed() == false) {
                    //5. 关闭连接,释放资源
                    conn.close();
                }
            }catch(Exception ex){
                ex.printStackTrace();
            }
        }

    }
}

程序运行结果如下:

特别说明:以上程序只是为了说明应用 JDBC 开发的标准流程。