JDBC快速入门,如何使用JDBC操作数据库?

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1. 前言

在 Java 开发中使用 Java 语言操作数据库是非常重要的一部分那么 Java 语言是如何操作数据库的呢我们需要使用不同厂商的数据库时例如 MySQLOracle 等显然一套 Java 代码是不能操作不同的数据库的那么怎样实现一套 Java 代码对不同的数据库的操作呢

在这里插入图片描述

JDBC 应运而生JDBC 是使用Java语言操作关系型数据库的一套API其中定义了对数据库操作的规范不同的数据库厂商提供了不同的 JDBC 实现类称为驱动使用时只需要导入需要的数据库驱动 jar 包便可以操作不同的关系型数据库其实际是使用了 jar 包中的实现类。

该系列文章的学习目标

  • 什么是 JDBC如何使用
  • 使用 JDBC 完成数据的增删改查操作
  • JDBC API 熟练使用

2. JDBC 概述

2.1 概念

JDBC Java DataBase Connectivity 是使用 Java 语言操作关系型数据库的一套API。本质上来说JDBC 中定义了一套操作关系型数据库的规范但是我们不能直接使用这套接口来操作数据库于是各大数据库厂商提供了 JDBC 不同的实现类称为驱动例如 MySQL 驱动此时我们只需要操作 JDBC 规范好的代码便可以完成对数据库的操作。在实现对数据库的操作时其底层是使用了 jar 包中定义的实现类。

image-20230122171430643

当我们使用不同的数据库时例如测试时使用 MySQL 数据库部署时使用Oracle 数据库只需要编写一套 Java 代码便可以实现对不同关系型数据库的操作。

2.2 优点

使用 JDBC 操作关系型数据库时各大数据库厂商提供了不同的实现类我们不需要针对不同的数据库进行单独开发因此我们也可以随时替换数据库而不用大量修改Java代码。

我们只需要在使用时导入需要使用的数据库对应的驱动 jar包到项目中便可以实现对指定数据库的操作使 Java 操作数据库变得轻松便捷。

下图就是MySQL的驱动jar包

image-20230122170603015

不同版本的 jar 包可以在官网下载。

3. JDBC 快速入门

使用 Java 语言操作数据库实际上就是 Java 代码将 sql 语句发送到 MySQL 数据库服务端MySQL 服务端接收并执行 sql 语句同时返回一个执行结果最后该结果会发送到 Java 代码进行处理。

在这里插入图片描述

对数据库的操作大致分为以下几个步骤

  1. 注册驱动
  2. 获取连接
  3. 编写sql
  4. 获取执行sql对象
  5. 执行sql
  6. 处理返回结果
  7. 释放资源

在进行编码之前需要先创建工程导入数据库的驱动 jar 包。这里以 JDBC 操作 MySQL 数据库为例步骤如下

创建空项目定义项目名称及路径

image-20230122173738084

在File / Project Structure 中进行项目设置JDK版本编译版本等

image-20230122173942616

创建新模块指定名称及位置

image-20230122174154153

在 jdbc-demo 模块中新建 Lib 文件夹

image-20230122174526391

将下载好的 MySQL驱动 jar 包导入 Lib 目录下作为库文件

image-20230122174641452

右键 MySQL 驱动 jar 包点击 Add as Library ,并选择模块下有效

image-20230122174725653

创建好工程以后就可以编写代码操作数据库啦

在 idea 中右键 src / new / Java Class ,输入类名 JDBCDemo 创建一个新的类。

第一步注册驱动

//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");

目的是把 Driver 类加载到内存中。其实Java 中用于注册驱动的是 registerDriver() 方法而在 Driver 类中使用了该方法所以只要把 Driver 类加载到内存中 包含 registerDriver 方法的静态代码块就会执行驱动就会被注册。我们可以查看JDK源码中的Driver 类

public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    public Driver() throws SQLException {
    }

    static {
        try {
            DriverManager.registerDriver(new Driver());
        } catch (SQLException var1) {
            throw new RuntimeException("Can't register driver!");
        }
    }
}

第二步获取连接

String url="jdbc:mysql://localhost:3306?useSSL=false";
String username="root";
String pass word="abc123";
Connection conn = DriverManager.getConnection(url, username, password);

目的是通过 getConnection() 方法获取数据库连接 Connection 类对象这里没有直接把数据传入方法之中而是定义了三个局部变量url数据库用户名和密码其中 url 参数有固定的语法格式

jdbc:mysql://ip地址(域名):端口号参数键值对1&参数键值对2

第三步定义sql

String sql="update account set money=2000 where name='张三'";

目的是定义操作数据库的 sql 语句。

第四步获取执行sql的对象

Statement stmt = conn.createStatement();

目的是在执行 sql 语句之前先获取执行 sql 的对象 statement。

第五步执行sql

int count = stmt.executeUpdate(sql);

目的是为了将 sql 发送到数据库服务端让数据库服务端执行完 sql并且返回一个结果这里的 executeUpdate() 返回受影响的行数。

第六步处理返回结果

 System.out.println(count);

目的是处理数据库服务端返回的 sq l执行结果这里我们打印了 executeUpdate() 方法返回的受影响的行数。

第七步释放资源

stmt.close();
conn.close();

目的是在完成对数据库的操作以后释放资源否则数据库文件将一直被被程序占用释放资源时遵循先开后释放的原则。

使用 JDBC 操作 MySQL 数据库完整代码

public class JDBCDemo {
    public static void main(String[] args) throws Exception {
        //1.注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取连接
        String url="jdbc:mysql://localhost:3306/db1?useSSL=false";
        String username="root";
        String pass word="abc123";
        Connection conn = DriverManager.getConnection(url, username, password);
        //3.定义sql
        String sql="update account set money=2000 where name='张三'";
        //4.获取执行sql的对象
        Statement stmt = conn.createStatement();
        //5.执行sql
        int count = stmt.executeUpdate(sql);
        //6.处理结果
        System.out.println(count);
        //7.释放资源
        stmt.close();
        conn.close();
    }
}

Java编程基础教程系列

Java IO流字节流详解

Java IO流字符流详解

Java IO流缓冲流详解

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: 数据库