在java中使用mysql数据库-入门实战篇

2023-12-13 09:48:58

与其讲概念,不如直接上手实践
注释很详细,看注释足以理解全篇代码

这里带着大家从头到尾做一个简单的学生信息管理系统,前面先分模块,最后会附上源码便于复制

在开始之前先确定自己的jdbc有没有安装:
如果没有请先看这篇博文:jdbc的安装与配置

一.建表部分

CREATE DATABASE student_db;--创建数据库
USE student_db;  -- 切换到student_db数据库

--建表
CREATE TABLE student (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  age INT NOT NULL
);

二.在该管理系统中需要引入的包

混个眼熟就行,缺啥包可以使用编译器的自动补全

mport java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

三.定义一下登入数据库需要用到的参数

 	 //URL
    //useSSL=false禁用SSL检查
    //serverTimezone=Asia/Shanghai设置时区
    private static final String JDBC_URL = "jdbc:mysql://localhost:3306/student_db?useSSL=false&serverTimezone=Asia/Shanghai";
    
    //用户名
    private static final String USERNAME = "root";
    
    //密钥
    private static final String PASSWORD = "1234";

四.定义扫描器并连接数据库

Scanner scanner = new Scanner(System.in);

// 连接到数据库
Scanner scanner = new Scanner(System.in);

        // 连接到数据库
        //通过使用Java 7引入的try-with-resources语句,可以确保在代码块执行完成后,自动关闭连接对象connection
        //所以不需要手动关闭数据库连接
        try (Connection connection = DriverManager.getConnection(JDBC_URL, USERNAME, PASSWORD)) {
            System.out.println("连接到数据库");

            while (true) {
                System.out.println("请选择操作:");
                System.out.println("1. 添加学生");
                System.out.println("2. 删除学生");
                System.out.println("3. 修改学生信息");
                System.out.println("4. 查找学生");
                System.out.println("0. 退出");

                int choice = scanner.nextInt();
                scanner.nextLine(); // 清除输入缓冲区换行符

                switch (choice) {
                    case 1:
                        addStudent(connection, scanner);
                        break;
                    case 2:
                        deleteStudent(connection, scanner);
                        break;
                    case 3:
                        updateStudent(connection, scanner);
                        break;
                    case 4:
                        findStudent(connection, scanner);
                        break;
                    case 0:
                        System.out.println("退出程序");
                        return;
                    default:
                        System.out.println("无效选择");
                        break;
                }

                System.out.println();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

五.添加学生功能实现函数

	 /**
     * 向数据库添加新学生。
     *
     * @param connection 数据库连接
     * @param scanner    用于用户输入的扫描器
     * @throws SQLException 如果发生数据库错误
     */
    private static void addStudent(Connection connection, Scanner scanner) throws SQLException {
        System.out.println("请输入学生姓名:");
        String name = scanner.nextLine();
        System.out.println("请输入学生年龄:");
        int age = scanner.nextInt();

        // 准备 SQL 语句,插入学生姓名和年龄
        String sql = "INSERT INTO student (name, age) VALUES (?, ?)";

        try (PreparedStatement statement = connection.prepareStatement(sql)) {
            // 设置参数,绑定学生姓名和年龄
            statement.setString(1, name);
            statement.setInt(2, age);

            // 执行更新操作,并获取受影响的行数
            int rowsInserted = statement.executeUpdate();

            // 检查是否成功插入学生
            if (rowsInserted > 0) {
                System.out.println("学生添加成功");
            } else {
                System.out.println("学生添加失败");
            }
        }
    }

六.删除学生功能实现函数

	 /**
     * 从数据库中删除学生的方法。
     *
     * @param connection 数据库连接
     * @param scanner    用于用户输入的扫描器
     * @throws SQLException 如果发生数据库错误
     */
    private static void deleteStudent(Connection connection, Scanner scanner) throws SQLException {
        System.out.println("请输入要删除的学生ID:");
        int id = scanner.nextInt();

        // 准备 SQL 语句,根据学生ID删除学生
        String sql = "DELETE FROM student WHERE id = ?";

        try (PreparedStatement statement = connection.prepareStatement(sql)) {
            // 设置参数,绑定学生ID
            statement.setInt(1, id);

            // 执行更新操作,并获取受影响的行数
            int rowsDeleted = statement.executeUpdate();

            // 检查是否成功删除学生
            if (rowsDeleted > 0) {
                System.out.println("学生删除成功");
            } else {
                System.out.println("学生删除失败");
            }
        }
    }

七.修改学生功能实现函数

	 /**
     * 更新数据库中的学生信息的方法。
     *
     * @param connection 数据库连接。
     * @param scanner    用于用户输入的扫描器。
     * @throws SQLException 如果发生数据库错误。
     */
    private static void updateStudent(Connection connection, Scanner scanner) throws SQLException {
        System.out.println("请输入要修改的学生ID:");
        int id = scanner.nextInt();
        scanner.nextLine(); // 清除输入缓冲区换行符

        System.out.println("请输入学生姓名:");
        String name = scanner.nextLine();
        System.out.println("请输入学生年龄:");
        int age = scanner.nextInt();

        // 准备 SQL 语句,更新学生姓名和年龄
        String sql = "UPDATE student SET name = ?, age = ? WHERE id = ?";

        try (PreparedStatement statement = connection.prepareStatement(sql)) {
            // 设置参数,绑定学生姓名、年龄和ID
            statement.setString(1, name);
            statement.setInt(2, age);
            statement.setInt(3, id);

            // 执行更新操作,并获取受影响的行数
            int rowsUpdated = statement.executeUpdate();

            // 检查是否成功修改学生信息
            if (rowsUpdated > 0) {
                System.out.println("学生信息修改成功");
            } else {
                System.out.println("学生信息修改失败");
            }
        }
    }

八.查找学生功能实现函数

	 /**
     * 在数据库中查找学生的方法
     *
     * @param connection 数据库连接
     * @param scanner    用于用户输入的扫描器
     * @throws SQLException 如果发生数据库错误
     */
    private static void findStudent(Connection connection, Scanner scanner) throws SQLException {
        System.out.println("请输入要查找的学生ID:");
        int id = scanner.nextInt();

        // 准备 SQL 语句,根据学生ID查询学生信息
        String sql = "SELECT * FROM student WHERE id = ?";

        try (PreparedStatement statement = connection.prepareStatement(sql)) {
            // 设置参数,绑定学生ID
            statement.setInt(1, id);

            // 执行查询操作,获取结果集
            ResultSet resultSet = statement.executeQuery();

            // 检查是否找到该学生
            if (resultSet.next()) {
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");

                System.out.println("学生ID:" + id);
                System.out.println("姓名:" + name);
                System.out.println("年龄:" + age);
            } else {
                System.out.println("找不到该学生");
            }
        }
    }

九.源码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

/**
 * 主类,用于管理学生数据库操作。
 */
public class Main {

    //useSSL=false禁用SSL检查
    //serverTimezone=Asia/Shanghai设置时区
    private static final String JDBC_URL = "jdbc:mysql://localhost:3306/student_db?useSSL=false&serverTimezone=Asia/Shanghai";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "1234";

    /**
     * 主方法执行程序。
     *
     * @param args 命令行参数(在此应用程序中未使用)。
     */
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 连接到数据库
        //通过使用Java 7引入的try-with-resources语句,可以确保在代码块执行完成后,自动关闭连接对象connection
        //所以不需要手动关闭数据库连接
        try (Connection connection = DriverManager.getConnection(JDBC_URL, USERNAME, PASSWORD)) {
            System.out.println("连接到数据库");

            while (true) {
                System.out.println("请选择操作:");
                System.out.println("1. 添加学生");
                System.out.println("2. 删除学生");
                System.out.println("3. 修改学生信息");
                System.out.println("4. 查找学生");
                System.out.println("0. 退出");

                int choice = scanner.nextInt();
                scanner.nextLine(); // 清除输入缓冲区换行符

                switch (choice) {
                    case 1:
                        addStudent(connection, scanner);
                        break;
                    case 2:
                        deleteStudent(connection, scanner);
                        break;
                    case 3:
                        updateStudent(connection, scanner);
                        break;
                    case 4:
                        findStudent(connection, scanner);
                        break;
                    case 0:
                        System.out.println("退出程序");
                        return;
                    default:
                        System.out.println("无效选择");
                        break;
                }

                System.out.println();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 向数据库添加新学生。
     *
     * @param connection 数据库连接。
     * @param scanner    用于用户输入的扫描器。
     * @throws SQLException 如果发生数据库错误。
     */
    private static void addStudent(Connection connection, Scanner scanner) throws SQLException {
        System.out.println("请输入学生姓名:");
        String name = scanner.nextLine();
        System.out.println("请输入学生年龄:");
        int age = scanner.nextInt();

        // 准备 SQL 语句,插入学生姓名和年龄
        String sql = "INSERT INTO student (name, age) VALUES (?, ?)";

        try (PreparedStatement statement = connection.prepareStatement(sql)) {
            // 设置参数,绑定学生姓名和年龄
            statement.setString(1, name);
            statement.setInt(2, age);

            // 执行更新操作,并获取受影响的行数
            int rowsInserted = statement.executeUpdate();

            // 检查是否成功插入学生
            if (rowsInserted > 0) {
                System.out.println("学生添加成功");
            } else {
                System.out.println("学生添加失败");
            }
        }
    }

    /**
     * 从数据库中删除学生的方法。
     *
     * @param connection 数据库连接。
     * @param scanner    用于用户输入的扫描器。
     * @throws SQLException 如果发生数据库错误。
     */
    private static void deleteStudent(Connection connection, Scanner scanner) throws SQLException {
        System.out.println("请输入要删除的学生ID:");
        int id = scanner.nextInt();

        // 准备 SQL 语句,根据学生ID删除学生
        String sql = "DELETE FROM student WHERE id = ?";

        try (PreparedStatement statement = connection.prepareStatement(sql)) {
            // 设置参数,绑定学生ID
            statement.setInt(1, id);

            // 执行更新操作,并获取受影响的行数
            int rowsDeleted = statement.executeUpdate();

            // 检查是否成功删除学生
            if (rowsDeleted > 0) {
                System.out.println("学生删除成功");
            } else {
                System.out.println("学生删除失败");
            }
        }
    }


    /**
     * 更新数据库中的学生信息的方法。
     *
     * @param connection 数据库连接。
     * @param scanner    用于用户输入的扫描器。
     * @throws SQLException 如果发生数据库错误。
     */
    private static void updateStudent(Connection connection, Scanner scanner) throws SQLException {
        System.out.println("请输入要修改的学生ID:");
        int id = scanner.nextInt();
        scanner.nextLine(); // 清除输入缓冲区换行符

        System.out.println("请输入学生姓名:");
        String name = scanner.nextLine();
        System.out.println("请输入学生年龄:");
        int age = scanner.nextInt();

        // 准备 SQL 语句,更新学生姓名和年龄
        String sql = "UPDATE student SET name = ?, age = ? WHERE id = ?";

        try (PreparedStatement statement = connection.prepareStatement(sql)) {
            // 设置参数,绑定学生姓名、年龄和ID
            statement.setString(1, name);
            statement.setInt(2, age);
            statement.setInt(3, id);

            // 执行更新操作,并获取受影响的行数
            int rowsUpdated = statement.executeUpdate();

            // 检查是否成功修改学生信息
            if (rowsUpdated > 0) {
                System.out.println("学生信息修改成功");
            } else {
                System.out.println("学生信息修改失败");
            }
        }
    }

    /**
     * 在数据库中查找学生的方法。
     *
     * @param connection 数据库连接。
     * @param scanner    用于用户输入的扫描器。
     * @throws SQLException 如果发生数据库错误。
     */
    private static void findStudent(Connection connection, Scanner scanner) throws SQLException {
        System.out.println("请输入要查找的学生ID:");
        int id = scanner.nextInt();

        // 准备 SQL 语句,根据学生ID查询学生信息
        String sql = "SELECT * FROM student WHERE id = ?";

        try (PreparedStatement statement = connection.prepareStatement(sql)) {
            // 设置参数,绑定学生ID
            statement.setInt(1, id);

            // 执行查询操作,获取结果集
            ResultSet resultSet = statement.executeQuery();

            // 检查是否找到该学生
            if (resultSet.next()) {
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");

                System.out.println("学生ID:" + id);
                System.out.println("姓名:" + name);
                System.out.println("年龄:" + age);
            } else {
                System.out.println("找不到该学生");
            }
        }
    }

}


文章来源:https://blog.csdn.net/m0_73756108/article/details/134861028
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。