jdbc

79 阅读2分钟

数据库准备工作

创建一张MySQL的表

CREATE TABLE `user` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用户名',
  `age` int DEFAULT NULL COMMENT '年龄',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

插入一些测试数据信息

INSERT INTO `user` (`id`, `name`, `age`) VALUES  (1, 'user1', 11);
INSERT INTO `user` (`id`, `name`, `age`) VALUES  (2, 'user2', 19);
INSERT INTO `user` (`id`, `name`, `age`) VALUES  (3, 'user3', 16);

项目

image.png

增加依赖

<dependencies>  
    <dependency>  
        <groupId>mysql</groupId>  
        <artifactId>mysql-connector-java</artifactId>  
        <version>8.0.30</version>  
    </dependency>  
</dependencies>

代码

package org.example;

import java.sql.*;

public class Main {
    private static Connection conn;
    private static Statement stmt;

    static { //加载驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
            //创建Statement对象
            stmt = conn.createStatement();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    public static void deleteOne(int id) throws SQLException {
        String sql = "delete from user where id=" + id;
        int result = stmt.executeUpdate(sql);
        if (result > 0) {
            System.out.println("删除成功");
        }
    }

    public static void updateOne(int age, int id) throws SQLException {
        String sql = "update user set age=" + age + " where id=" + id;
        int result = stmt.executeUpdate(sql);
        if (result > 0) {
            System.out.println("修改成功");
        }
    }

    public static void insertOne(int id, String name, int age) throws SQLException {
        String sql = "insert into user(id,name,age) values(" + id + ", '" + name + "', " + age + ")";
        int result = stmt.executeUpdate(sql);
        if (result > 0) {
            System.out.println("添加成功");
        }
    }


    public static void queryById(int id) throws SQLException {
        String queryAllSql = "select * from user where id=" + id;
        ResultSet rs = stmt.executeQuery(queryAllSql);
        boolean isMatch = false;
        while (rs.next()) {
            isMatch = true;
            System.out.println("id: " + rs.getInt("id")
                    + " name: " + rs.getString("name")
                    + " age: " + rs.getInt("age"));
        }
        if (!isMatch) {
            System.out.println("数据查询为空");
        }
    }

    public static void queryAllUser() throws SQLException {
        String sql = "select * from user";
        ResultSet rs = stmt.executeQuery(sql);
        while (rs.next()) {
            System.out.println("id: " + rs.getInt("id")
                    + " name: " + rs.getString("name")
                    + " age: " + rs.getInt("age"));
        }
    }

    public static void main(String[] args)  throws SQLException{
        queryAllUser();
        insertOne(4, "user4", 20);
        queryById(4);
        updateOne(33, 4);
        queryById(4);
        deleteOne(4);
        queryById(4);

        System.out.println("Hello world!");
    }
}

测试

小结

image.png

JDBC API提供了一套标准的接口和类,以帮助开发人员使用Java与数据库进行通信。这些类和接口包括:

  • DriverManager类:该类为应用程序提供了一个标准的接口,以便连接到一个或多个数据库。它还提供了一组静态方法,以注册和注销驱动程序。
  • Connection接口:该接口表示与数据库的连接。可以使用此接口执行各种数据库操作。
  • Statement接口:该接口表示可以执行在数据库中执行的SQL语句。可以使用此接口执行各种操作,如查询、插入、更新和删除数据。
  • ResultSet接口:该接口表示查询结果集。可使用此接口从数据库中检索查询结果。
  • PreparedStatement接口:该接口继承了Statement接口,并提供了更高效和安全的SQL语句执行功能。使用此接口可以预编译SQL语句。