当前位置:数码通 > 评测

Java与MySQL数据库结合,实现注册登录

来源于 数码通 2023-10-03 10:39

开发Java项目,与数据库的交互是必不可少的。接下来我将使用Java结合MySQL数据库来实现一个简单的注册和登录功能。希望对大家的学习有所帮助。

设计理念

1.数据库设计——了解用户的需求后,根据用户的这些需求来设计数据库。

2。数据模型——是将数据库表的结构封装在一个类中。

3。数据处理工具类——根据数据模型给出的要求设计一个工具类来处理数据。

4。视图展示——最终为用户提供一个交互便捷的视图界面。


详细设计

1。首先,在数据库中创建一个表。

2。根据业务需求开发相应的数据模型。本设计主要关注登录和注册,因此设计了两个数据模型。

(1) 注册型号

包第_14章.第_8部分;

public class Register { //注册模型
    字符串ID;
    字符串密码;

    公共字符串 getId() {
        返回ID;
    }

    公共无效setId(字符串id){
        这个.id = id;
    }

    公共字符串 getPassword() {
        返回密码;
    }

    公共无效setPassword(字符串密码){
        this.password = 密码;
    }
}

(2) 登录模型

包第_14章.第_8部分;

public class Login { //登录模型
    字符串ID;
    字符串密码;
    boolean 登录成功 = false;

    公共字符串 getId() {返回ID;
    }

    公共无效setId(字符串id){
        这个.id = id;
    }

    公共字符串 getPassword() {
        返回密码;
    }

    公共无效setPassword(字符串密码){
        this.password = 密码;
    }

    公共布尔 isLoginSuccess() {
        返回登录成功;
    }

    公共无效setLoginSuccess(布尔登录成功){
        this.loginSuccess = 登录成功;
    }
}

3。基于上面设计的两个数据模型,分别设计相应的数据处理工具类。

(1)注册模型处理工具类

包第_14章.第_8部分;

导入 Chapter_14.GetDatabaseConnection;

导入 javax.swing.*;
导入java.sql.Connection;
导入 java.sql.PreparedStatement;
导入java.sql.SQLException;

public class registerHandle { //注册数据处理程序
    连接连接=空;
    准备好的语句presql; //预处理对象
    字符串sql;

    公共注册句柄(){
        连接 = GetDatabaseConnection.connectDB("book","root","");
    }公共无效writeRegister(寄存器寄存器){
        整数好= 0;
        尝试 {
            sql = "插入寄存器值(?,?)"; //预处理
            presql = 连接.prepareStatement(sql);
            presql.setString(1,register.getId());
            presql.setString(2,register.getPassword());
            确定 = presql.executeUpdate(); //插入成功返回1
            连接.close();
        } catch (SQLException e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null,"ID不能重复","警告",JOptionPane.WARNING_MESSAGE);

        }
        如果(好的!=0){
            JOptionPane.showMessageDialog(null,"注册成功","恭喜",JOptionPane.WARNING_MESSAGE);
        }
    }
}

(2)登录模型处理工具类

包第_14章.第_8部分;

导入 Chapter_14.GetDatabaseConnection;

导入 javax.swing.*;
导入java.sql.Connection;
导入 java.sql.PreparedStatement;
导入java.sql.ResultSet;
导入java.sql.SQLException;

公共类登录句柄{连接连接=空;
    准备好的语句presql;
    字符串sql;
    结果集结果集;
    布尔值登录成功;

    公共登录句柄(){
        连接 = GetDatabaseConnection.connectDB("book", "root", "");
    }

    公共无效readLogin(登录登录){
        尝试 {
            sql = "从寄存器中选择*,其中 ID = ? 且密码 = ?"; //主要用和
            presql = 连接.prepareStatement(sql);
            presql.setString(1, login.getId());
            presql.setString(2, 登录.getPassword());
            resultSet = presql.executeQuery();
            if (m.smtshopping.cn()) {
                登录.setLoginSuccess(true);
                JOptionPane.showMessageDialog(null, "登录成功", "恭喜", JOptionPane.WARNING_MESSAGE);
            } 别的 {
                登录.setLoginSuccess(false);
                JOptionPane.showMessageDialog(null, "登录失败", "提示", JOptionPane.WARNING_MESSAGE);
            }连接.close();
            登录成功 = 登录.isLoginSuccess();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}

4。可以设计一个测试类来验证程序是否能够正常通过。如果通过了,您就可以开始设计视图了。

(1) 注册视图的设计

包第_14章.第_8部分;

导入 javax.swing.*;
导入 java.awt.event.ActionEvent;
导入 java.awt.event.ActionListener;

公共类 registerPanel 扩展 JPanel 实现 ActionListener {
    注册注册;
    注册句柄 注册句柄;
    JTextField jTextFieldID;
    JTextField jTextFieldPassword;
    JButton j寄存器;

    公共注册面板(){
        //setLayout(new FlowLayout());
        //设置可见(true);
        在里面();
        证实();
    }

    无效初始化(){
        jTextFieldID = 新 JTextField(12);
        添加(新的JLabel(“ID:”));
        添加(jTextFieldID);
        jTextFieldPassword = new JTextField(12);
        jTextFieldPassword.addActionListener(this);添加(新的 JLabel(“密码:”));
        添加(jTextField密码);
        jregister = new JButton("注册");
        jregister.addActionListener(this);
        添加(j注册);


    }


    @覆盖
    公共无效actionPerformed(ActionEvent actionEvent){
        注册=新注册();
        register.setId(jTextFieldID.getText());
        register.setPassword(jTextFieldPassword.getText());
        registerHandle = 新的registerHandle();
        registerHandle.writeRegister(注册);
        jTextFieldPassword.setText(null);
    }
}

(2)登录视图的设计

包第_14章.第_8部分;

导入 javax.swing.*;
导入 java.awt.*;
导入 java.awt.event.ActionEvent;
导入 java.awt.event.ActionListener;

公共类loginPanel扩展JPanel实现ActionListener {
    登录登录;
    登录句柄登录句柄;
    JTextField jTextFieldID;
    JPasswordField jTextFieldPassword;
    JButton jLogin;

    公共登录面板(){//setLayout(new FlowLayout());
        //设置可见(true);
        在里面();
        证实();
    }

    无效初始化(){
        jTextFieldID = 新 JTextField(12);
        添加(新的JLabel(“ID:”));
        添加(jTextFieldID);
        jTextFieldPassword = 新 JPasswordField(12);
        jTextFieldPassword.addActionListener(this);
        添加(新的 JLabel(“密码:”));
        添加(jTextFieldPassword);
        jLogin = new JButton("登录");
        jLogin.addActionListener(this);
        添加(j登录);
    }

    公共布尔 isLoignSuccess() {
        返回loginHandle.loginSuccess;
    }

    @覆盖
    公共无效actionPerformed(ActionEvent actionEvent){
        登录=新登录();
        登录.setId(jTextFieldID.getText());
        char[] p = jTextFieldPassword.getPassword();
        登录.setPassword(new String(p));
        登录句柄 = 新登录句柄();
        loginHandle.readLogin(登录);}

5。将以上两个视图类合并为一个类,方便后续维护和修改。

包第_14章.第_8部分;

导入 javax.swing.*;
导入 java.awt.*;

公共类combinePanel扩展JPanel {
    JTabbedPane jTabbedPane;
    注册面板 注册面板;
    登录面板登录面板;

    公共组合面板(){
        //setLayout(new BorderLayout());如果不设置,则不会显示全帧。
        jTabbedPane = new JTabbedPane();
        注册面板=新的注册面板();
        登录面板=新的登录面板();
        jTabbedPane.addTab("注册界面", registerPanel);
        jTabbedPane.addTab("登录界面",loginPanel);
        添加(jTabbedPane,m.smtshopping.cn);
        jTabbedPane.validate();
    }

    公共布尔 isLoginSuccess() {
        返回loginPanel.isLoignSuccess();
    }
}

6。一切都已设计并准备好运行。设置程序的主入口。

包第_14章.第_8部分;

公共类Example14_9 {
    公共静态无效主(字符串[] args){
        myWindow myWindow = new myWindow();
    }
}

运行结果

(1) 报名成功

登录后参与评论