MySQL安装、建表、JDBC连接与注册功能

一、教学目标

  • 安装MySQL,创建数据库和user表。
  • 使用JDBC连接数据库,实现用户注册(PreparedStatement防止SQL注入)。

二、核心知识点

  • JDBC:Java连接数据库的标准API。
  • PreparedStatement:预编译SQL,防止注入,使用?占位符。
  • DriverManager:获取Connection对象。
  • executeUpdate():执行INSERT/UPDATE/DELETE,返回影响行数。

三、操作步骤

  1. 创建数据库和表
  • 在SQLyog左侧空白位置右键,新建数据库,名字叫:weitoutiao
    image
    image
  • 再新建查询,输入以下SQL脚本
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;-- 指定字符集为 utf8mb4

USE weitoutiao;-- 进入微头条这个数据库

CREATE TABLE `user` (-- 创建user表格存放用户信息
    `id` INT PRIMARY KEY AUTO_INCREMENT,-- id列:用户的唯一编号。INT是整数类型;PRIMARY KEY表示它是主键(相当于身份证号,绝对不能重复);自增,不用手动填编号
    `username` VARCHAR(50) NOT NULL UNIQUE,-- 字符不超过50;不能为空;不能重复
    `password` VARCHAR(100) NOT NULL,
    `role` VARCHAR(20) DEFAULT 'user',-- 默认是user
    `news_count` INT DEFAULT 0,
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP
);

image
image
image

  1. 用IDEA创建maven工程
    image

  2. 创建Maven项目,添加MySQL驱动

  • 在pom.xml文件的标签之上,添加如下依赖:
    <dependencies><!-- 【依赖管理区】这里用来声明当前项目需要用到哪些第三方工具包 -->
        <dependency><!-- 声明一个具体的依赖项-->
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId><!--JDBC驱动,连接数据库-->
            <version>8.0.33</version>
        </dependency>
    </dependencies>
  • 添加完之后,点击maven的刷新(弹窗按钮也可),就不红了
    image
  1. 编写DBUtil(连接数据库工具类)
  • 右键java文件夹,创建java类
    image
  • 输入:com.weitoutiao.util.DBUtil, 回车
    image
  • 编写如下代码:
package com.weitoutiao.util;// 声明这个工具类所在的包路径
// 【导入依赖】引入 JDBC 操作数据库必须的核心接口和类
import java.sql.Connection;// Connection 接口:代表与数据库的物理连接通道
import java.sql.DriverManager;// DriverManager 类:用于管理数据库驱动并获取连接
import java.sql.SQLException;// SQLException 类:处理数据库操作中可能出现的异常

public class DBUtil {//【创建工具类】封装数据库操作的辅助类
    private static final String URL = "jdbc:mysql://localhost:3306/weitoutiao?useSSL=false&serverTimezone=Asia/Shanghai"; // 【配置连接参数】使用 private static final 修饰,表示这些是全局唯一且不可修改的常量
    private static final String USER = "root";//登录数据库的用户名
    private static final String PASSWORD = "root";//登录数据库的密码

    static { //【静态代码块】当这个类被加载到内存时,里面的代码只会执行一次
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");// 核心作用:加载并注册 MySQL 8.0+ 版本的驱动程序
        } catch (ClassNotFoundException e) {// 如果找不到这个驱动类,说明项目里没有引入 mysql-connector-java 依赖,打印错误信息
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException { //【获取连接方法】提供一个公开的静态方法,供外部业务代码(如 UserDao)直接调用
        return DriverManager.getConnection(URL, USER, PASSWORD);// 利用上面配置好的三要素(URL、账号、密码),向数据库服务器申请一个连接通道并返回
    }
}
  1. 编写User实体类
  • 右键java,创建User类
    image
    编写如下代码:
package com.weitoutiao.entity;// 【定义包名】声明这个实体类所在的包路径

public class User {// 在实际开发中,它通常与数据库里的 user 表一一对应
    private Integer id;// 【主键ID】用户的唯一标识符。使用包装类 Integer
    private String username;
    private String password;
    private String role;
    private Integer newsCount;
    // 生成getter/setter(略)
}
  1. 编写UserDAO(数据访问层)实现注册
    右键com.weitoutiao包名,创建UserDA0类
    image
    编写如下代码:
package com.weitoutiao.dao;// 【定义包名】声明这个类属于 dao (数据访问) 层,专门负责与数据库进行交互
// 【导入依赖】引入用户实体类和刚才写的数据库工具类
import com.weitoutiao.entity.User;
import com.weitoutiao.util.DBUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
// 【创建 DAO 类】UserDAO 专门负责处理 user 表的数据增删改查操作
public class UserDAO {
    // 【注册方法】向数据库中插入一条新的用户记录
    public boolean register(String username, String password) {
         // SQL 语句:使用 ? 作为占位符,这是 PreparedStatement 的标准写法,可以有效防止 SQL 注入攻击
        String sql = "INSERT INTO user (username, password) VALUES (?, ?)";
        // 【核心逻辑】利用 try-with-resources 语法自动管理资源
        // 1. 调用 DBUtil 获取数据库连接
        // 2. 将 SQL 语句预编译成 PreparedStatement 对象
        try (Connection conn = DBUtil.getConnection();
             PreparedStatement ps = conn.prepareStatement(sql)) {
            // 【参数赋值】给 SQL 中的两个 ? 占位符分别设置真实的用户名和密码
            ps.setString(1, username);
            ps.setString(2, password);
            return ps.executeUpdate() > 0; // 【执行并返回结果】executeUpdate() 用于执行 INSERT/UPDATE/DELETE 语句
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }
}
  1. 编写Main测试
  • 右键com.weitoutiao,创建Main类
    image
    编写Mian中代码:
package com.weitoutiao;// 【定义包名】声明这个主类所在的包路径

import com.weitoutiao.dao.UserDAO;// 【导入依赖】引入刚才写好的用户数据访问对象(DAO)

public class Main {
    public static void main(String[] args) {
        UserDAO userDAO = new UserDAO();// 【实例化 DAO】创建一个 UserDAO 对象
        boolean success = userDAO.register("testuser", "123456");// 【调用注册方法】去数据库里插入一条测试数据
        System.out.println(success ? "注册成功" : "注册失败"); // 如果 success 为 true,输出 "注册成功";否则输出 "注册失败"
    }
}
  1. 运行测试
  • 运行
    image

  • 控制台打印:注册成功
    image

  • 通过SQLyou查看数据库表中数据已经对应增加
    image

posted on 2026-06-27 22:09  小巴拉  阅读(1)  评论(0)    收藏  举报