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

一、核心知识点

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

二、操作步骤

1.创建数据库和表

  • SQLyog左侧空白位置右键,新建数据库,名字叫:weitoutiao

3203083-20260616084349632-1776378103

3203083-20260616084420394-826022020

  • 再新建查询,输入以下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
    );
    

3203083-20260616084526699-1641603172

3203083-20260616084532421-558144845

3203083-20260616084539456-61015997

2.用IDEA创建maven工程

3203083-20260616084002207-921000932

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

pom.xml文件的</project>标签之上,添加如下依赖:

    <dependencies><!-- 【依赖管理区】这里用来声明当前项目需要用到哪些第三方工具包 -->
        <dependency><!-- 声明一个具体的依赖项-->
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId><!--JDBC驱动,连接数据库-->
            <version>8.0.33</version>
        </dependency>
    </dependencies>

添加完之后,点击maven的刷新,就不红了

3203083-20260616084659042-1496066720

4.编写DBUtil

  • 右键java文件夹,创建java类

3203083-20260616084735513-956842525

  • 输入:com.weitoutiao.util.DBUtil, 回车

3203083-20260616084812682-475365483

  • 编写如下代码:

    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、账号、密码),向数据库服务器申请一个连接通道并返回
        }
    }
    

    5. 编写User实体类

    • 右键java,创建User类

3203083-20260616084928488-1840758404

  • 编写如下代码:

    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(略)
    }
    

    6. 编写UserDAO(数据访问层)实现注册

    • 右键com.weitoutiao包名,创建UserDA0

3203083-20260616084953585-1532915661

- 编写如下代码:

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; } } }

7. 编写Main测试

- 右键com.weitoutiao,创建Main

3203083-20260616084953585-1532915661

- 编写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,输出 "注册成功";否则输出 "注册失败"
}
}
```

8.运行测试

- 运行

3203083-20260616085037943-742870355

- 控制台打印:注册成功

3203083-20260616085056195-1507238257

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

3203083-20260616085101066-113622482

posted @ 2026-06-24 10:46  沈瑜九  阅读(7)  评论(0)    收藏  举报