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

5 篇文章 0 订阅

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

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

在开始之前先确定自己的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("找不到该学生");
            }
        }
    }

}


  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码对我眨眼睛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值