swing和MySQL登录注册_用swing,jdbc连接数据库实战项目,注册,登录,输入电话号码等,用户名不可重名效果...

本文展示了如何使用Swing和MySQL数据库创建一个登录注册应用。通过创建用户表、商品表和订单详情表,实现了用户信息管理、商品分类及订单记录。代码示例包括数据表创建、数据插入以及使用Java的JDBC连接数据库进行数据查询和操作。
摘要由CSDN通过智能技术生成

结构:34875c7a06b089555f7390c5cbc3b11e.png

自己写的代码:

1b7e2df9412e25fac70ec8a3f9f4a3de.png

drop table yonghu, shangpin,dingdanxiangqing,sp_Type

create table yonghu(--创建用户表

yh_ID int primary key identity(1,1),

yh_Uname varchar(30) not null,

yh_Pwd varchar(30) not null,

yh_Name varchar(30) not null,

yh_Age int,

yh_Sex varchar(20),

yh_Phone varchar(100),

yh_Address varchar(200),

yh_Jieshao varchar(500),

yh_Q varchar(500),

yh_AQ varchar(500)

);

insert into yonghu values('1','11','诗书画唱1',21,'男','19999999999','江西','阳光帅气的男孩子','你爱好多吗?','多');

insert into yonghu values('2','22','诗书画唱2',22,'男','29999999999','北京','阳光帅气的男孩子','你看过的书多吗?','多');

insert into yonghu values('3','33','诗书画唱3',23,'男','39999999999','上海','阳光帅气的男孩子','你会的技能多吗?','多');

insert into yonghu values('4','44','诗书画唱4',24,'男','49999999999','湖南','阳光帅气的男孩子','你喜欢的动漫吗?','多');

insert into yonghu values('5','55','诗书画唱5',25,'男','59999999999','浙江','阳光帅气的男孩子','你喜欢的歌曲多吗?','多');

create table sp_Type(--用户类型表

sp_TypeID int primary key identity(1,1),

sp_TypeName varchar(100) not null

);

insert into sp_Type values('水果');

insert into sp_Type values('零食');

insert into sp_Type values('小吃');

insert into sp_Type values('日常用品');

create table shangpin(--商品表

sp_ID int primary key identity(1,1),

sp_Name varchar(100) not null,

sp_Price decimal(10,2) not null,

sp_TypeID int,

sp_Jieshao varchar(300)

);

insert into shangpin values('苹果',12,1,'好吃的苹果');

insert into shangpin values('香蕉',2,1,'好吃的香蕉');

insert into shangpin values('橘子',4,1,'好吃的橘子');

insert into shangpin values('娃哈哈',3,2,'好吃营养好');

insert into shangpin values('牙刷',5,4,'全自动牙刷');

drop table dingdan

create table dingdan(

dingdan_ID int primary key identity(1,1),

yh_ID int,

dingdanxiangqing_ID int

)

insert into dingdan values(1,1);

insert into dingdan values(1,2);

insert into dingdan values(1,3);

insert into dingdan values(2,4);

insert into dingdan values(2,5);

insert into dingdan values(2,6);

insert into dingdan values(3,7);

create table dingdanxiangqing(

dingdanxiangqing_ID int primary key identity(1,1),

sp_ID int,

sp_num int

)

insert into dingdanxiangqing values(1,3);

insert into dingdanxiangqing values(2,4);

insert into dingdanxiangqing values(1,5);

insert into dingdanxiangqing values(3,5);

insert into dingdanxiangqing values(4,2);

insert into dingdanxiangqing values(5,1);

insert into dingdanxiangqing values(3,3);

insert into dingdanxiangqing values(4,3);

select * from yonghu;

select * from shangpin;

select * from sp_Type;

e61a7f5f7d9e02dea7c82721775989ce.png

02645f1884fdd19b5523f4536dc5f081.png

dba4c58fe15b051749e3a8fc01f70be4.png

47593b84c03bf802a5b4cb8d873a2e64.png

package denglu;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class DBUtils {

private static Connection con = null;

private static ResultSet res = null;

private static Statement sta = null;

static {

try {

Class.forName("com.microsoft.sqlserver." + "jdbc.SQLServerDriver");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

public static Connection getCon() {

if (con == null) {

try {

con = DriverManager.getConnection(

"jdbc:sqlserver://DESKTOP-49FTFSP;"

+ "databaseName=yonghu", "sa", "1234abcd");

} catch (SQLException e) {

e.printStackTrace();

}

}

return con;

}

public static ResultSet Select(String sql) {

/* Select为用于查找的静态方法 */

con = getCon();

try {

sta = con.createStatement();

res = sta.executeQuery(sql);

} catch (SQLException e) {

e.printStackTrace();

}

return res;

}

public static boolean ZSG(String sql) {

/* ZXG为用于增加(Z)或修改(G)或删除(S)的静态方法,命名不可太长不然这里会不管用 */

boolean b = false;

con = getCon();

try {

sta = con.createStatement();

int num = sta.executeUpdate(sql);

if (num > 0) {

b = true;

}

} catch (SQLException e) {

e.printStackTrace();

}

return b;

}

}

8d3c24f7e18601e826df331b4bbdfbc2.png

98ffe13aa04371ff1117316c885843aa.png

package denglu;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

public class denglu extends JFrame {

public static JButton btn_dl, btn_qx, btn_zc = null;

//画窗体

public static JLabel lb_uname, lb_pwd = null;

public static JPasswordField pwd1 = null;

public static JTextField JTextField_unametxt1 = null;

public denglu() {

// 窗体必写的5句话

this.setLayout(null);

this.setSize(440, 400);

this.setLocationRelativeTo(null);

lb_uname = new JLabel("用户名:");

lb_pwd = new JLabel("密码");

lb_uname.setBounds(100, 100, 70, 30);

lb_pwd.setBounds(100, 140, 70, 30);

this.add(lb_uname);

this.add(lb_pwd);

JTextField_unametxt1 = new JTextField();

pwd1 = new JPasswordField();

JTextField_unametxt1.setBounds(180, 100, 140, 30);

pwd1.setBounds(180, 140, 140, 30);

this.add(JTextField_unametxt1);

this.add(pwd1);

btn_dl = new JButton("登录");

btn_dl.addActionListener(new shijian_dl(this));

btn_dl.setBounds(140, 180, 70, 35);

btn_qx = new JButton("取消");

btn_qx.addActionListener(new shijian_dl(this));

btn_qx.setBounds(230, 180, 70, 35);

btn_zc = new JButton("注册 ");

btn_zc.setBounds(330, 100, 70, 20);

this.add(btn_zc);

this.add(btn_dl);

this.add(btn_qx);

// btn_qx.setBounds(arg0, arg1, arg2, arg3);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

}

// 点击按钮是触发事件,所以加点击事件

// 因为事件中药使用窗体,将窗体传过来

class shijian_dl implements ActionListener {

public denglu dd = null;

public shijian_dl(denglu d) {

dd = d;

}

@Override

public void actionPerformed(ActionEvent arg0) {

// JOptionPane.showMessageDialog(null, "点击");

if (arg0.getActionCommand().equals("登录")) {

String uname = dd.JTextField_unametxt1.getText().trim();// 获取用户输入的用户名

String pwd = dd.pwd1.getText().trim();// 获取密码

String sql = "select * from yonghu where yh_uname='" + uname

+ "'and yh_pwd='" + pwd + "'";

ResultSet res = DBUtils.Select(sql);

try {// 如果res中有数据,登录成功,否则登录失败

if (res.next()) {

JOptionPane.showMessageDialog(null, "登录成功");

new zhujiemian();

dd.setVisible(false);

} else {

JOptionPane.showMessageDialog(null, "用户名或密码错误");

}

// 项目中,登录,注册,找回密码

// 如果res中有数据,登录成功,否则登录失败

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 点击按钮后会做什么事

// 要登录,首先要获取窗体上的用户名和密码

// 去数据库里查一下用户输入的用户名和密码数据库中存在吗?

// 如果数据库中存在和用户输入的用户名和密码一致

// 说明数据库有这条数据库,用户就可以登录

} else if (arg0.getActionCommand().equals("注册")) {

// JOptionPane . showMessageDialog(null, "点击了往册按钮");

new zhuce();

// dd. setVisible(false);

}

}

}

ff408d695ff7cdfc3d5786677586393c.png

9092721ba166386ea8049b8a8c6f93be.png

package denglu;

public class main {

public static void main(String[] args) {

new denglu();

new zhuce();

new zhaohuimima();

}

}

3ed2166f7dfb4ebf6e21fd9ba4f28bbf.png

5ddf44e7c3e699b7570340714e866589.png

package denglu;

import javax.swing.JFrame;

public class zhaohuimima extends JFrame {

// 窗体必写的5句话

public zhaohuimima() {

this.setLayout(null);

this.setSize(700, 700);

this.setTitle("找回密码界面");

this.setLocationRelativeTo(null);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

}

54d2b8f88527e09acba4c4f0aa870ed6.png

b40bc8aa211e5425e3642c458b21c73a.png

package denglu;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.swing.JButton;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPasswordField;

import javax.swing.JRadioButton;

import javax.swing.JTextArea;

import javax.swing.JTextField;

//再加一个注册的事件类,点击事件

class shijian_zhuce implements ActionListener {

public static zhuce zc = null;

public shijian_zhuce(zhuce z) {

this.zc = z;

}

@Override

public void actionPerformed(ActionEvent arg0) {

JOptionPane.showMessageDialog(null, "点击了注册按钮");

// 点击往册按钮后要做什么事?

// 得到用户输入的用户名和真实姓名

String String_uname = zc.JTextField_uname.getText();// 得到用户名

String String_pwd = zc.JPasswordField_pwd1.getText();// 得到密码

String String_pwd1 = zc.JPasswordField_pwd2.getText();// 得到确认密码

String String_TureName = zc.JTextField_name.getText();// 得到用户名

String String_age = zc.JTextField_age.getText();// 得到年龄

String String_sex = zc.JTextField_sex.getText();// 得到性别

String String_phone = zc.JTextField_phone.getText();// 得到电话号码

String String_address = zc.JTextField_address.getText();// 得到地址

String String_jieshao = zc.JTextArea_jieshao.getText();// 得到地址

String String_Q = zc.JTextField_Q.getText();// 得到地址

String String_A = zc.JTextField_A.getText();// 得到地址

// 判断两次输入的秘密是否一致

if (!String_pwd.equals(String_pwd1)) {

JOptionPane.showMessageDialog(null, "两次密码输入不一致, 请重新输入");

return;

}

// 加一个判断,数据库里查询一下这个用户名存不存在

String sql_panduanuname = "select * from yonghu where yh_uname='"

+ String_uname + "'";

ResultSet res_select_uname = DBUtils.Select(sql_panduanuname);

try {

if (res_select_uname.next()) {

// 说明这个用户已经存在了,如果已经存在了,提示一下,之后return

// 如果用户名已经存在了,还有住数据库添加内容的必要吗?

JOptionPane.showMessageDialog(null, "用户名已经存在了,请重新输入");

return;

}

} catch (SQLException e) {

e.printStackTrace();

}

//

// yh_Uname ,yh_Pwd ,yh_Name ,yh_Age ,yh_Sex ,yh_Phone ,yh_Address

// ,yh_Jieshao

String sql = "insert into yonghu values('" + String_uname + "','"

+ String_pwd + "','"

+ String_TureName + "'," + String_age + ",'" + String_sex

+ "','" + String_phone + "','" + String_address + "','"

+ String_jieshao + "','" + String_Q + "','" + String_A + "'"

+ ")";

if (DBUtils.ZSG(sql)) {

JOptionPane.showMessageDialog(null, "注册成功");

} else {

JOptionPane.showMessageDialog(null, "出现了未知的错误,请重试");

}

// 如果判断了用户名是唯一的,并且两次秘密输入-致,就提示用户数输入真实姓名

// 1.先获取用户输入的用户名和密码

// 2.判断两次输入的秘密是否-致

}

}

public class zhuce extends JFrame {

public static JButton btn_zhuce = null;

public static JRadioButton btn1, btn2 = null;

public static JComboBox com_age = null;

public static JPasswordField JPasswordField_pwd1,

JPasswordField_pwd2 = null;

public static JTextArea jta_adress, jta_jieshao = null;

/* JTextArea类是一 个显示纯文本的多行(DuoHang)区域。 */

static JTextArea JTextArea_jieshao = null;

public static JTextField JTextField_uname, JTextField_name,

JTextField_phone, JTextField_age, JTextField_sex,

JTextField_address, JTextField_jieshao, JTextField_Q,

JTextField_A = null;

public static JLabel lb_uname, lb_pwd, lb_qrpwd, lb_name, lb_age, lb_sex,

lb_phone, lb_address, lb_jieshao, lb_Q, lb_A = null;

public zhuce() {

// 窗体必写的5句话

this.setLayout(null);

this.setSize(400, 700);

this.setTitle("注册界面");

this.setLocationRelativeTo(null);

lb_uname = new JLabel("用户名");

lb_pwd = new JLabel("用户密码");

lb_qrpwd = new JLabel("确认密码");

lb_name = new JLabel("真实姓名");

lb_age = new JLabel("年龄");

lb_sex = new JLabel("性别");

lb_phone = new JLabel("电话");

lb_address = new JLabel("地址");

lb_jieshao = new JLabel("介绍");

lb_Q = new JLabel("问题");

lb_A = new JLabel("答案");

lb_uname.setBounds(80, 100, 70, 30);

lb_pwd.setBounds(80, 140, 70, 30);

lb_qrpwd.setBounds(80, 180, 70, 30);

lb_name.setBounds(80, 220, 70, 30);

lb_age.setBounds(80, 260, 70, 30);

lb_sex.setBounds(80, 300, 70, 30);

lb_phone.setBounds(80, 340, 70, 30);

lb_address.setBounds(80, 380, 70, 30);

lb_jieshao.setBounds(80, 420, 70, 30);

lb_Q.setBounds(80, 460, 70, 30);

lb_A.setBounds(80, 500, 70, 30);

this.add(lb_uname);

this.add(lb_pwd);

this.add(lb_qrpwd);

this.add(lb_name);

this.add(lb_age);

this.add(lb_sex);

this.add(lb_phone);

this.add(lb_address);

this.add(lb_jieshao);

this.add(lb_Q);

this.add(lb_A);

JTextField_uname = new JTextField();

JTextField_name = new JTextField();

JPasswordField_pwd1 = new JPasswordField();

JPasswordField_pwd2 = new JPasswordField();

JTextField_age = new JTextField();

JTextField_sex = new JTextField();

JTextField_phone = new JTextField();

JTextField_address = new JTextField();

JTextField_Q = new JTextField();

JTextField_A = new JTextField();

JTextArea_jieshao = new JTextArea();

JTextArea_jieshao.setColumns(8);

JTextArea_jieshao.setRows(4);

JTextArea_jieshao.setLineWrap(true);

this.add(JTextArea_jieshao);

JTextField_uname.setBounds(160, 100, 140, 30);

JPasswordField_pwd1.setBounds(160, 140, 140, 30);

JPasswordField_pwd2.setBounds(160, 180, 140, 30);

JTextField_name.setBounds(160, 220, 140, 30);

JTextField_age.setBounds(160, 260, 140, 30);

JTextField_sex.setBounds(160, 300, 140, 30);

JTextField_phone.setBounds(160, 340, 140, 30);

JTextField_address.setBounds(160, 380, 140, 30);

JTextArea_jieshao.setBounds(160, 420, 140, 40);

JTextField_Q.setBounds(160, 460, 140, 30);

JTextField_A.setBounds(160, 500, 140, 30);

this.setLocationRelativeTo(null);

this.add(JTextField_uname);

this.add(JPasswordField_pwd1);

this.add(JPasswordField_pwd2);

this.add(JTextField_name);

this.add(JTextField_age);

this.add(JTextField_sex);

this.add(JTextField_phone);

this.add(JTextField_address);

this.add(JTextField_Q);

this.add(JTextField_A);

btn_zhuce = new JButton("确认注册");

btn_zhuce.addActionListener(new shijian_zhuce(this));

btn_zhuce.setBounds(100, 580, 120, 30);

this.add(btn_zhuce);

// this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

}

3618a4c98510b074f60d66208b2dadf2.png

dd394274ace8ec8e67c4034fd1216f4d.png

c3879841a58c4bdcaa5a8a2b596e7eea.png

package denglu;

import javax.swing.JFrame;

public class zhujiemian extends JFrame {

// 窗体必写的5句话

public zhujiemian() {

this.setLayout(null);

this.setSize(700, 700);

this.setTitle("主界面");

this.setLocationRelativeTo(null);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

}7c2dc9b4507bee5a4598f6a7be26a1a7.png

实现运行效果:

48db2bdb96de536e2a6dc08cf1c3549e.png

a362fd5bedd7f4a0d8738d26af62d4f3.png

8076649a511d175ae9002e4dfae99c8d.png

07ad9783ed5bd5baddb695ccf0ef925e.png

834993628a84e406e9bf135b2e97e130.png

4e50233eb347711a2bea98a691ed4882.png

e492305df3f0a5d42553c2238060ffb5.png

/*这里的用户名为数据库中的yh_Name,加了不可重名的判断条件等*/

2dcf6580bc531fbbba73c762225ecb30.png

36d1cb1a782b605ac10906b30e715015.png

23224153b586bd59caf9ed592e546d63.png

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的Java SwingMySQL数据库实现登录注册页面的示例代码。 首先,需要创建一个MySQL数据库并在其中创建一个名为“user”的数据表,该表包含以下列:id(int)、username(varchar)、password(varchar)。 接下来,创建一个Java Swing应用程序并添加以下组件: - 两个文本框,用于输入用户名密码 - 两个标签,显示用户名密码文本框的标签 - 两个按钮,一个用于登录,一个用于注册 然后,在Java代码中,使用JDBC连接MySQL数据库并实现登录注册功能。以下是示例代码: ```java import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPasswordField; import javax.swing.JTextField; public class LoginRegisterPage extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; private static final String DB_URL = "jdbc:mysql://localhost:3306/mydatabase"; private static final String DB_USER = "root"; private static final String DB_PASSWORD = "123456"; private JLabel usernameLabel, passwordLabel; private JTextField usernameField; private JPasswordField passwordField; private JButton loginButton, registerButton; public LoginRegisterPage() { setTitle("Login/Register Page"); setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); usernameLabel = new JLabel("Username:"); passwordLabel = new JLabel("Password:"); usernameField = new JTextField(20); passwordField = new JPasswordField(20); loginButton = new JButton("Login"); registerButton = new JButton("Register"); loginButton.addActionListener(this); registerButton.addActionListener(this); setLayout(null); usernameLabel.setBounds(50, 50, 80, 25); passwordLabel.setBounds(50, 100, 80, 25); usernameField.setBounds(150, 50, 150, 25); passwordField.setBounds(150, 100, 150, 25); loginButton.setBounds(50, 150, 100, 25); registerButton.setBounds(200, 150, 100, 25); add(usernameLabel); add(passwordLabel); add(usernameField); add(passwordField); add(loginButton); add(registerButton); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == loginButton) { String username = usernameField.getText(); String password = new String(passwordField.getPassword()); try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); PreparedStatement stmt = conn.prepareStatement("SELECT * FROM user WHERE username = ? AND password = ?")) { stmt.setString(1, username); stmt.setString(2, password); ResultSet rs = stmt.executeQuery(); if (rs.next()) { JOptionPane.showMessageDialog(this, "Login successful!"); } else { JOptionPane.showMessageDialog(this, "Invalid username or password!"); } } catch (SQLException ex) { ex.printStackTrace(); } } else if (e.getSource() == registerButton) { String username = usernameField.getText(); String password = new String(passwordField.getPassword()); try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); PreparedStatement stmt = conn.prepareStatement("INSERT INTO user (username, password) VALUES (?, ?)")) { stmt.setString(1, username); stmt.setString(2, password); stmt.executeUpdate(); JOptionPane.showMessageDialog(this, "Registration successful!"); } catch (SQLException ex) { ex.printStackTrace(); } } } public static void main(String[] args) { new LoginRegisterPage(); } } ``` 这个示例代码中,使用JDBC连接MySQL数据库,并在登录注册按钮的操作中执行相应的SQL语句。如果登录注册成功,将弹出一个消息框显示相应的信息。 需要注意的是,这只是一个简单的示例代码,实际应用中需要更多的错误处理和安全性措施,例如密码加密和SQL注入防范等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值