怎么用Java和MySQL数据库实现注册和登录

设计思路

1、数据库设计——在了解用户的需求之后,根据用户的这些需求进行数据库的设计。

2、数据模型——就是把数据库表的结构全都封装在一个类当中。

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

4、视图展示——最后提供给用户一个交互方便的视图界面。

具体设计

1、首先要在数据库中建好表。

立即学习“Java免费学习笔记(深入)”;

2、根据业务需求,制定相应的数据模型。本次设计主要是登录和注册两个内容,因此设计了两个数据模型。

(1)注册模型

package Chapter_14.Part_8;public class Register {//注册模型    String id;    String password;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }}

(2)登录模型

package Chapter_14.Part_8;public class Login {//登录模型    String id;    String password;    boolean loginSuccess = false;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public boolean isLoginSuccess() {        return loginSuccess;    }    public void setLoginSuccess(boolean loginSuccess) {        this.loginSuccess = loginSuccess;    }}

3、根据以上设计好的两个数据模型,分别设计相应的数据处理的工具类。

阿里云-虚拟数字人 阿里云-虚拟数字人

阿里云-虚拟数字人是什么? …

阿里云-虚拟数字人 2 查看详情 阿里云-虚拟数字人

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

package Chapter_14.Part_8;import Chapter_14.GetDatabaseConnection;import javax.swing.*;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;public class registerHandle {//注册数据处理者    Connection connection = null;    PreparedStatement presql;   //预处理对象    String sql;    public registerHandle() {        connection = GetDatabaseConnection.connectDB("book","root","");    }    public void writeRegister(Register register){        int ok = 0;        try {            sql = "insert into register value (?,?)";    //预处理            presql = connection.prepareStatement(sql);            presql.setString(1,register.getId());            presql.setString(2,register.getPassword());            ok = presql.executeUpdate();    //成功插入式返回1            connection.close();        } catch (SQLException e) {            e.printStackTrace();            JOptionPane.showMessageDialog(null,"ID不能重复","警告",JOptionPane.WARNING_MESSAGE);        }        if (ok!=0){            JOptionPane.showMessageDialog(null,"注册成功","恭喜",JOptionPane.WARNING_MESSAGE);        }    }}

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

package Chapter_14.Part_8;import Chapter_14.GetDatabaseConnection;import javax.swing.*;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class loginHandle {    Connection connection = null;    PreparedStatement presql;    String sql;    ResultSet resultSet;    boolean loginSuccess;    public loginHandle() {        connection = GetDatabaseConnection.connectDB("book", "root", "");    }    public void readLogin(Login login) {        try {            sql = "select * from register where ID = ? and password = ? ";  //主要用and            presql = connection.prepareStatement(sql);            presql.setString(1, login.getId());            presql.setString(2, login.getPassword());            resultSet = presql.executeQuery();            if (resultSet.next()) {                login.setLoginSuccess(true);                JOptionPane.showMessageDialog(null, "登录成功", "恭喜", JOptionPane.WARNING_MESSAGE);            } else {                login.setLoginSuccess(false);                JOptionPane.showMessageDialog(null, "登录失败", "提示", JOptionPane.WARNING_MESSAGE);            }            connection.close();            loginSuccess = login.isLoginSuccess();        } catch (SQLException e) {            e.printStackTrace();        }    }}

4、可以设计一个测试类,用来校验程序能否正常通过。能通过,就可以开始设计视图了。

(1)注册视图的设计

package Chapter_14.Part_8;import javax.swing.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class registerPanel extends JPanel implements ActionListener {    Register register;    registerHandle registerHandle;    JTextField jTextFieldID;    JTextField jTextFieldPassword;    JButton jregister;    public registerPanel() {        //setLayout(new FlowLayout());        //setVisible(true);        init();        validate();    }    void init() {        jTextFieldID = new JTextField(12);        add(new JLabel("ID:"));        add(jTextFieldID);        jTextFieldPassword = new JTextField(12);        jTextFieldPassword.addActionListener(this);        add(new JLabel("PASSWORD:"));        add(jTextFieldPassword);        jregister = new JButton("Register");        jregister.addActionListener(this);        add(jregister);    }    @Override    public void actionPerformed(ActionEvent actionEvent) {        register = new Register();        register.setId(jTextFieldID.getText());        register.setPassword(jTextFieldPassword.getText());        registerHandle = new registerHandle();        registerHandle.writeRegister(register);        jTextFieldPassword.setText(null);    }}

(2)登录视图的设计

package Chapter_14.Part_8;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class loginPanel extends JPanel implements ActionListener {    Login login;    loginHandle loginHandle;    JTextField jTextFieldID;    JPasswordField jTextFieldPassword;    JButton jLogin;    public loginPanel() {        //setLayout(new FlowLayout());        //setVisible(true);        init();        validate();    }    void init() {        jTextFieldID = new JTextField(12);        add(new JLabel("ID:"));        add(jTextFieldID);        jTextFieldPassword = new JPasswordField(12);        jTextFieldPassword.addActionListener(this);        add(new JLabel("PASSWORD:"));        add(jTextFieldPassword);        jLogin = new JButton("Login");        jLogin.addActionListener(this);        add(jLogin);    }    public boolean isLoignSuccess() {        return loginHandle.loginSuccess;    }    @Override    public void actionPerformed(ActionEvent actionEvent) {        login = new Login();        login.setId(jTextFieldID.getText());        char[] p = jTextFieldPassword.getPassword();        login.setPassword(new String(p));        loginHandle = new loginHandle();        loginHandle.readLogin(login);    }

5、把以上两个视图类结合在一个类当中,方便之后的维护和修改。

package Chapter_14.Part_8;import javax.swing.*;import java.awt.*;public class combinePanel extends JPanel {    JTabbedPane jTabbedPane;    registerPanel registerPanel;    loginPanel loginPanel;    public combinePanel() {        //setLayout(new BorderLayout());    不设置时不全框显示        jTabbedPane = new JTabbedPane();        registerPanel = new registerPanel();        loginPanel = new loginPanel();        jTabbedPane.addTab("注册界面", registerPanel);        jTabbedPane.addTab("登录界面", loginPanel);        add(jTabbedPane, BorderLayout.CENTER);        jTabbedPane.validate();    }    public boolean isLoginSuccess() {        return loginPanel.isLoignSuccess();    }}

6、一切都设计完毕了,就可以运行了。设置一个程序的主入口。

package Chapter_14.Part_8;public class Example14_9 {    public static void main(String[] args) {        myWindow myWindow = new myWindow();    }}

以上就是怎么用Java和MySQL数据库实现注册和登录的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/264046.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
linux怎样修改时间
上一篇 2026年10月12日 11:11:39
下一篇 2025年12月21日 17:35:51

相关推荐

  • 怎么删除mysql中的表

    一、删除单个表 删除单个表非常简单。只需使用其中一个 SQL 命令即可删除。 DROP TABLE 指令: 删除表格时,可以使用 DROP TABLE 命令。例如,如果要删除名为“user”的表,命令如下: DROP TABLE user; 使用 DROP TABLE 指令可以删除单个表,如果结果呈…

    2026年10月12日
    000
  • 怎么使用Golang编写MySQL存储过程

    一、为什么使用MySQL存储过程 MySQL存储过程在使用过程中,具有以下优点: 可以这样重写这句话:通过在MySQL服务器端运行存储过程,可以提高应用程序的性能,并避免在应用程序中动态生成SQL语句。这可以减少网络通信的开销和数据库的压力。 程序的可维护性和重用性:存储过程可以被多次调用和重复使用…

    2026年10月12日
    000
  • MySQL怎样处理NULL值 IS NULL与IFNULL函数应用场景

    MySQL怎样处理NULL值 IS NULL与IFNULL函数应用场景MySQL怎样处理NULL值 IS NULL与IFNULL函数应用场景MySQL怎样处理NULL值 IS NULL与IFNULL函数应用场景MySQL怎样处理NULL值 IS NULL与IFNULL函数应用场景

    mysql将null视为“未知”而非0或空字符串,影响查询和计算结果。使用is null判断字段是否为null,ifnull用于替换null值。高效利用索引处理null列时,可建立索引加速is null查询,但大量null值需考虑用特殊值替代或组合索引优化。coalesce是sql标准函数,支持多参…

    2026年10月12日 • 用户投稿
    000
  • MySQL中怎么使用SQL语句判断表是否存在

    判断表是否存在的SQL语句如下: SHOW TABLES LIKE ‘table_name’; 其中,table_name是要判断是否存在的表的名称。 如果该表存在,则会返回一个结果集,否则将返回一个空结果集。可以通过判断结果集的长度来确定表是否存在。 下面是一个基本的PHP函数,用于在MySQL中…

    2026年10月12日
    000
  • Java中wait和sleep的区别 对比线程等待的两种机制

    Java中wait和sleep的区别 对比线程等待的两种机制Java中wait和sleep的区别 对比线程等待的两种机制Java中wait和sleep的区别 对比线程等待的两种机制Java中wait和sleep的区别 对比线程等待的两种机制

    java中wait()和sleep()的核心区别在于:1. wait()会释放锁,而sleep()不会;2. wait()是对象级别、用于线程间协作,必须在同步代码块中使用,而sleep()是线程级别、可在任何地方使用;3. wait()需通过notify()/notifyall()唤醒,sleep…

    2026年10月12日 • 用户投稿
    100
  • Nodejs中koa2怎么连接mysql

    Nodejs中koa2怎么连接mysqlNodejs中koa2怎么连接mysqlNodejs中koa2怎么连接mysqlNodejs中koa2怎么连接mysql

    将查询结果转为对象或者数组 在真实开发中,实际上某些查询结果应该放入到一个对象中 JSON_OBJECT:()中是key-value的形式 SELECT products.id as id, products.title as title, products.price as price, prod…

    2026年10月12日 • 用户投稿
    000
  • MySQL之排序与单行处理函数怎么使用

    1.排序 mysql支持数据排序操作,例如,现在我们按照工资从小到大进行排序操作: mysql> select ename,sal from emp order by sal;+——–+———+| ename | sal |+——–+———+| SM…

    2026年10月12日
    100
  • java中引入包的关键字是 import语句的使用方法

    java中引入包的关键字是 import语句的使用方法java中引入包的关键字是 import语句的使用方法java中引入包的关键字是 import语句的使用方法java中引入包的关键字是 import语句的使用方法

    java中引入包的关键字是import。1.import语句放在文件顶部,用于引入类,如import java.util.arraylist;。2.可使用通配符引入所有类,但需谨慎。3.静态引入允许直接使用静态方法和常量,如import static java.lang.math.pi;。4.最佳实…

    2026年10月12日 • 用户投稿
    100
  • mysql中SQL的概念是什么

    1、SQL是结构化查询语言。 DML 数据操纵语言 用来操作数据库中所包含的数据 INSERT UPDATE DELETE DDL 数据定义语言 用于创建和删除数据库对象等操作 CREATE DROP ALTER DQL 数据查询语言 用来对数据库中的数据进行查询 SELECT DCL 数据控制语言…

    2026年10月12日
    000
  • Docker如何创建运行多个mysql容器

    Docker如何创建运行多个mysql容器Docker如何创建运行多个mysql容器Docker如何创建运行多个mysql容器Docker如何创建运行多个mysql容器

    1.使用mysql/mysql-server:latest镜像快速启动一个mysql实例 docker run –name ilink_user_01 -e mysql_root_password=123456 0d 0p 3307:3306 mysql/mysql-server:latest i…

    2026年10月12日 • 用户投稿
    100
  • Java中==和equals()有什么不同 深入比较Java中==和equals()的底层区别

    Java中==和equals()有什么不同 深入比较Java中==和equals()的底层区别Java中==和equals()有什么不同 深入比较Java中==和equals()的底层区别Java中==和equals()有什么不同 深入比较Java中==和equals()的底层区别Java中==和equals()有什么不同 深入比较Java中==和equals()的底层区别

    java中==和equals()的底层区别在于:1. ==操作符比较的是基本数据类型的值或引用类型的内存地址;2. equals()默认比较内存地址,但可被重写以比较对象内容。例如,string类重写了equals()以比较字符串内容。因此,当需要根据对象属性判断相等时需重写equals(),同时也…

    2026年10月12日 • 用户投稿
    100
  • mysql电商平台的技术架构是什么

    一、电商平台标准化套件 A.商城系统 1.设置:站点设置;帐号同步;上传设置;SEO设置;消息通知;支付方式;权限设置;配送地区; 2.商品:分类管理;品牌管理;商品管理;图片空间; 3.店铺:店铺管理;店铺等级;店铺分类;二级域名; 4.会员:会员管理;积分管理;预存款;分享绑定设置;买家动态; …

    2026年10月12日
    200
  • Java中方法引用怎么用 详解四种方法引用的语法格式

    Java中方法引用怎么用 详解四种方法引用的语法格式Java中方法引用怎么用 详解四种方法引用的语法格式Java中方法引用怎么用 详解四种方法引用的语法格式Java中方法引用怎么用 详解四种方法引用的语法格式

    方法引用是lambda表达式的简化写法,用于直接引用已有方法实现函数式接口,提升代码可读性。其核心优势在于简洁性和可读性,适用于不同场景:1. 静态方法引用(如string::comparetoignorecase)用于调用静态方法;2. 实例方法引用(如person::printname)用于特定…

    2026年10月12日 • 用户投稿
    000
  • Java中如何反转字符串 分析三种字符串反转的实现

    Java中如何反转字符串 分析三种字符串反转的实现Java中如何反转字符串 分析三种字符串反转的实现Java中如何反转字符串 分析三种字符串反转的实现Java中如何反转字符串 分析三种字符串反转的实现

    结论:java中反转字符串最高效且简洁的方法是使用stringbuilder的reverse方法。此外,还可通过char数组对撞交换和递归方式实现。1. stringbuilder的reverse方法性能最佳,适用于大多数场景,代码简洁高效;2. char数组对撞交换通过两个指针逐步交换字符实现反转…

    2026年10月12日 • 用户投稿
    000
  • Java中OCR的作用 解析光学字符识别

    Java中OCR的作用 解析光学字符识别Java中OCR的作用 解析光学字符识别Java中OCR的作用 解析光学字符识别Java中OCR的作用 解析光学字符识别

    java中ocr的作用是让程序“看懂”图片里的文字,并将其转换为计算机可处理的字符数据。具体来说,ocr赋予java应用提取图像、扫描文档或视频流中的文本信息的能力。其实现步骤包括图像预处理、字符分割和识别。选择ocr库时,tesseract ocr适合开源灵活需求,asprise ocr适合高精度…

    2026年10月12日 • 用户投稿
    000
  • mysql查询速度慢如何解决

    1.建立索引 索引在MySQL中是一个至关重要的组件,能够极大地增加查询速度。通过在常用的查询字段上建立索引,可以加快查询速度。首先,需要确保查询字段中的值是唯一的,如主键。其次,可以基于这些唯一的字段进行索引。这将使查询速度比通过全表扫描方式查询时更快。 2.使用正确的数据类型 在MySQL中,使…

    2026年10月12日
    000
  • Java中JaCoCo的作用 解析覆盖率

    Java中JaCoCo的作用 解析覆盖率Java中JaCoCo的作用 解析覆盖率Java中JaCoCo的作用 解析覆盖率Java中JaCoCo的作用 解析覆盖率

    jacoco是java中用于测量代码覆盖率的工具,其核心通过jvm层面的字节码插桩记录代码执行情况。1. 插桩阶段:在类加载时插入探针代码以记录执行信息;2. 数据收集阶段:探针将执行数据写入.exec文件;3. 报告生成阶段:将数据转换为html、xml等格式展示行覆盖、分支覆盖等指标。可通过命令…

    2026年10月12日 • 用户投稿
    000
  • Composer如何处理”nothing to install or update”

    Composer如何处理”nothing to install or update”Composer如何处理”nothing to install or update”Composer如何处理”nothing to install or update”Composer如何处理”nothing to install or update”

    当出现”nothing to install or update”时,表明Composer认为依赖已满足。常见于lock文件匹配、版本未变、使用–dry-run或vendor已完整的情况。若需更新,可运行composer update;若需重装,可删除vendor…

    2026年10月12日 • 用户投稿
    100
  • MySQL中如何使用LOWER()函数

    LOWER() LOWER(str)和LCASE(str)函数用于将字符串转换为小写形式,例如: SELECT LOWER(‘MySQL字符串函数’) AS str1, LCASE(‘MySQL字符串函数’) AS str2;str1 |str2 |————–+———-…

    2026年10月12日
    100
  • Java中Deflater的用法 详解压缩算法的实现

    Java中Deflater的用法 详解压缩算法的实现Java中Deflater的用法 详解压缩算法的实现Java中Deflater的用法 详解压缩算法的实现Java中Deflater的用法 详解压缩算法的实现

    deflater的压缩级别包括no_compression、best_speed、default_compression、best_compression和huffman_only,选择应根据具体需求权衡速度与压缩比。1. deflater提供多种压缩级别:no_compression适用于对速度要…

    2026年10月12日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信