开发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) 报名成功