通过JDBC实现用户登录与注册

该文展示了使用JavaJDBC进行数据库操作,包括创建用户表`shs_users`,实现用户注册和登录功能。`UserEntity`类定义了用户属性,`UserDao`处理数据库交互,`UserService`提供业务逻辑,而`UserTest`进行测试。用户注册会检查用户名是否已存在,登录则验证用户名和密码的匹配性。

1.创建一张表

CREATE TABLE shs_users (
  `id` int DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `pwd` varchar(255) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

INSERT INTO shs_users (`id`, `name`, `pwd`) VALUES ('1', 'mm', '123');
INSERT INTO shs_users (`id`, `name`, `pwd`) VALUES ('2', 'yy', '666');
package JDBC.entity;

public class UserEntity {
    private Long id;
    private String name;
    private String pwd;

    public UserEntity(String name, String pwd) {

        this.name = name;
        this.pwd = pwd;
    }
    public UserEntity(Long id,String name, String pwd) {
        this.id=id;
        this.name = name;
        this.pwd = pwd;
    }

    public Long getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}

package JDBC.dao;

import JDBC.entity.UserEntity;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class UserDao {
    public int registerUser(UserEntity userEntity) {
        Connection connection = null;
        Statement statement = null;
        try {
            //A.java连接mysql数据库查询所有数据
            //1.导入mysql驱动jar包;
            //2. 注册驱动 javase 反射机制Class.forName()
            Class.forName("com.mysql.cj.jdbc.Driver");
            //3. 获取数据库连接
            connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/shs_demo?serverTimezone=UTC", "root", "root");
            //4. 获取执行者对象
            statement = connection.createStatement();
            String insertUserSql = "INSERT INTO `shs_users` (`id`, `name`, `pwd`) VALUES (null, '" + userEntity.getName() + "', '" + userEntity.getPwd() + "');";
            System.out.println("insertUserSql:" + insertUserSql);
            int result = statement.executeUpdate(insertUserSql);
            return result;
        } catch (Exception e) {
            e.printStackTrace();
            return 0;

    }finally{//  7. 释放jdbc资源
        try {
            if (statement != null)
                statement.close();
            if (connection != null)
                connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}
    //根据姓名查询
    public UserEntity getByNameUser(String name){
        if (name==null ||name.length()==0){
            return null;
        }
        Connection connection=null;
        Statement statement=null;
        ResultSet resultSet=null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            connection=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/shs_demo?serverTimezone=UTC", "root", "root");
            //4. 获取执行者对象
            statement=connection.createStatement();
            String getByNameUserSql="SELECT * FROM shs_users WHERE `name`='" + name+"' ";
            System.out.println(getByNameUserSql);
            resultSet =statement.executeQuery(getByNameUserSql);
            boolean result=resultSet.next();
            if (!result){
                return null;
            }
            Long dbId=resultSet.getLong("id");
            String dbname=resultSet.getString("name");
            String dbpwd=resultSet.getString("pwd");
            return new UserEntity(dbId,dbname,dbpwd);
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }finally {
            try {
                if (statement!=null)
                    statement.close();
                if (connection!=null)
                    connection.close();
                if (resultSet!=null)
                    resultSet.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    public UserEntity login(UserEntity userEntity) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/shs_demo?serverTimezone=UTC", "root", "root");
            //4. 获取执行者对象
            statement = connection.createStatement();
            String loginSql = "SELECT * FROM shs_users WHERE `name`='" + userEntity.getName() + "' and pwd='" + userEntity.getPwd() + "';";
            System.out.println(loginSql);
            resultSet = statement.executeQuery(loginSql);
            boolean result = resultSet.next();
            if (!result) {
                return null;
            }
            Long dbID = resultSet.getLong("id");
            String dbName = resultSet.getString("name");
            String dbPwd = resultSet.getString("pwd");
            return new UserEntity(dbID,dbName, dbPwd);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                if (connection != null) {
                    connection.close();
                }
                if (resultSet != null) {
                    resultSet.close();

                }
                if (statement != null) {
                    statement.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

package JDBC.service;

import JDBC.dao.UserDao;
import JDBC.entity.UserEntity;

public class UserService {
    private UserDao userDao=new UserDao();
    public int registerUser(UserEntity userEntity){
        String name=userEntity.getName();
        UserEntity userEntity1=userDao.getByNameUser(name);
        if (userEntity1!=null){
            System.out.println("用户名已经存在");
            return 0;
        }
        return userDao.registerUser(userEntity);
    }

    public UserEntity getByNameUser(String name){
        return userDao.getByNameUser(name);
    }
    public UserEntity login(UserEntity userEntity){
        return userDao.login(userEntity);
    }
}

package JDBC.test;

import JDBC.dao.UserDao;
import JDBC.entity.UserEntity;
import JDBC.service.UserService;

import java.util.Scanner;

public class UserTest {
   private UserService userService=new UserService();

    public static void main(String[] args) {
        UserTest userTest = new UserTest();
        userTest.index();
    }
    public void index(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数字1:用户注册");
        System.out.println("请输入数字2:用户登录");
        int number=scanner.nextInt();
        switch (number){
            case 1:
                registerUser();
                break;
            case 2:
                login();
                break;
        }
    }
    public void registerUser(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入姓名:");
        String name=scanner.nextLine();
        System.out.println("请输入密码:");
        String pwd=scanner.nextLine();
        int result= userService.registerUser(new UserEntity(name,pwd));
        if (result>0){
            System.out.println("用户注册成功");
        }else {
            System.out.println("用户注册失败");
        }
    }
    public void login(){
        for (int i=1;i<=3;i++){
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入姓名:");
            String name=scanner.nextLine();
            System.out.println("请输入密码:");
            String pwd=scanner.nextLine();
            UserEntity userEntity=userService.login(new UserEntity(name,pwd));
            if (userEntity!=null){
                System.out.println("登录成功");
                return;
            }else {
                System.out.println("姓名不正确或者密码不正确,错误次数:"+i);
            }
        }
        }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值