使用Java+MySQL做的一个简单的注册登录页面

3 篇文章 0 订阅

昨天开始接触MySQL数据库,大概熟悉了一下在java中操作mysql数据库的基本用法,今天尝试着上手做了一个简单的注册登录的小例子,包括界面布局等,纯手工,感觉收获满满,特来分享一下。

我只用了5个类,包括  “连接数据库”,“注册页面”,“注册信息操作页面”,“登录页面”,“登录信息检查页面”。

注册和登录页面,我采用了BOX布局方式,因为我喜欢它的不随页面的大小改变而改变的特点,顺便通过这些练习,来检验一下自己最近的学习成果。

我发现我还是对MySQL的操作不熟,看来接下来得要有一段时间来研究MySQL数据库了。我坚持使用mysql数据库,是因为我之前对它还是了解一些的,只是没有真正上手操作,我认为数据库的操作原理应该都相似,先熟悉一门,那么别的自然是水到渠成;

行了,废话不多说了,我来分享一下我的代码,激励一下自己,如果能帮到其他和我一样的初学者,那就更好了;


(1)conn_db类

package 注册信息;

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

public class conn_db{
	Connection con;
	String url = null;
	//Statement stmt;
	
	public void connection() throws ClassNotFoundException{
		url = "jdbc:mysql://localhost:3306/wang?"
				+ "user=root & password=883883 & useUnicode=true & characterEnunicode=UTF8";
		try{
			Class.forName("com.mysql.jdbc.Driver");
			con = DriverManager.getConnection(url);
			System.out.println("连接成功");
			//stmt = con.createStatement();
		}
		catch(SQLException e){
			e.printStackTrace();
		}
	}
	
	
//	public static void main(String[] args) throws ClassNotFoundException {
//		conn_db conn = new conn_db();
//		conn.connection();
//		
//	}
}


(2)login类

package 注册信息;

import java.awt.FlowLayout;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.*;

public class login extends JFrame{
	//JLabel accountL,nameL;
	JTextField accountT,nameT;
	JButton okB,registB;
	Box baseB1,baseB2,box1,box2,box3;		//此登录页面采用Box布局方式;
	login_db log;
	
	login(){
		init();
	}
	void init(){
		log = new login_db();
		
		accountT = new JTextField(10);
		nameT = new JTextField(20);
		okB = new JButton("登录");
		registB = new JButton("注册");
		
		box1 = Box.createVerticalBox();
		box1.add(new JLabel("账号:"));
		box1.add(Box.createVerticalStrut(8));
		box1.add(new JLabel("姓名"));
		
		box2 = Box.createVerticalBox();
		box2.add(accountT);
		box2.add(Box.createVerticalStrut(8));
		box2.add(nameT);
		
		box3 = Box.createHorizontalBox();
		box3.add(okB);
		box3.add(Box.createHorizontalStrut(20));
		box3.add(registB);
		
		baseB1 = Box.createHorizontalBox();
		baseB1.add(box1);
		baseB1.add(Box.createHorizontalStrut(8));
		baseB1.add(box2);
		
		baseB2 = Box.createVerticalBox();
		baseB2.add(baseB1);
		baseB2.add(Box.createVerticalStrut(10));
		baseB2.add(box3);
		
		okB.addActionListener(log);
		registB.addActionListener(log);
		
		log.setaccountT(accountT);
		log.setnameT(nameT);
		log.setButton(okB,registB);
		
		add(baseB2);
		setLayout(new FlowLayout());
		setBounds(200,150,400,300);
		setVisible(true);
		setTitle("用户登录界面");
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
	}
	
	public static void main(String[] args) {
		login lo = new login();
	}
}

3)login_db类

package 注册信息;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.*;

public class login_db extends conn_db implements ActionListener {
	JTextField accT,nameT;
	JButton okB,registB;
	register re;
	ResultSet rs;
	
	public void setaccountT(JTextField a){
		accT = a;
	}
	public void setnameT(JTextField n){
		nameT = n;
	}
	public void setButton(JButton b1,JButton b2){
		okB = b1;
		registB = b2;
	}
	
	public void actionPerformed(ActionEvent e){
		if(e.getSource() == okB){
			if(accT.getText().equals(""))			//判断用户输入是否为空;
				JOptionPane.showMessageDialog(null, "请填写账号!");
			else if(nameT.getText().equals(""))
				JOptionPane.showMessageDialog(null, "请输入姓名");
			else{
				String accountT = accT.getText();
				String namesT = nameT.getText();
				try {
					connection(); 		//加载conn_db类,连接数据库;
					boolean com = compareWithSql(accountT,namesT);
					if(com)
						JOptionPane.showMessageDialog(null, "登录成功");
					else{
						JOptionPane.showMessageDialog(null, "账号或姓名不正确,请重新输入");
						accT.setText("");
						nameT.setText("");
					}
				} 
				catch (Exception e1) {
					e1.printStackTrace();
				}
			}
		}
		else if(e.getSource() == registB){
			new JFrame().dispose();
			re = new register();
		}
	}
	
	//用户输入检查
	boolean compareWithSql(String accountT,String namesT) throws Exception{
		String sql;		
		Connection con = super.con;
		Statement stmt = con.createStatement();
		sql = "select * from my";
//		System.out.println(sql);
		rs = stmt.executeQuery(sql);
		while(rs.next()){				//用户输入的信息和数据库中的信息做比较,判断输入是否正确;
			String acc = rs.getString(1);
			String names = rs.getString(2);
			if(acc.equals(accountT) && names.equals(namesT)){
				//break;
				return true;
			}
//			System.out.println(acc + "   " + names);
//			System.out.println(accountT + "   " + namesT);
			
		}
//		System.out.println("hahahaha");
		return false;
		
	}
	
}

4)register类

package 注册信息;

import javax.swing.JFrame;

import java.awt.FlowLayout;
import javax.swing.*;

public class register extends JFrame{
	JLabel accountLabel,nameLabel;
	JButton okButton,resetButton;
	JTextField accountText,nameText;
	Box baseBox1,baseBox2, box1,box2,box3;		 //此注册页面采用Box布局方式;
	//JPanel pane1,pane2;
	
	register_db regist;
	
	register(){
		init();
	}
	
	
	void init(){
		setLayout(new FlowLayout());
		accountLabel = new JLabel("账号");
		nameLabel= new JLabel("姓名");
		accountText = new JTextField(10);
		nameText = new JTextField(20);
		okButton = new JButton("确定");
		resetButton = new JButton("重置");
		
		regist = new register_db();
		
//		lab = new JLabel("用户注册页面");
		
		box1 = Box.createVerticalBox();
		box1.add(accountLabel);
		box1.add(Box.createVerticalStrut(8));
		box1.add(nameLabel);
		box2 = Box.createVerticalBox();
		box2.add(accountText);
		box2.add(Box.createVerticalStrut(8));
		box2.add(nameText);
		box3 = Box.createHorizontalBox();
		box3.add(okButton);
		box3.add(Box.createHorizontalStrut(15));
		box3.add(resetButton);
		baseBox1 = Box.createHorizontalBox();
		baseBox1.add(box1);
		baseBox1.add(Box.createHorizontalStrut(8));
		baseBox1.add(box2);
		baseBox2 = Box.createVerticalBox();
		baseBox2.add(baseBox1);
		baseBox2.add(Box.createVerticalStrut(10));
		baseBox2.add(box3);
		add(baseBox2);
		
		okButton.addActionListener(regist);
		resetButton.addActionListener(regist);
		
		
		regist.setaccountField(accountText);
		regist.setnameField(nameText);
		regist.setokButton(okButton);
		regist.setresetButton(resetButton);
		
		setBounds(200,200,400,300);
		setVisible(true);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setTitle("用户注册界面");
	}
	
//	void registAction(){
//		
//	}
	
	
//	public static void main(String[] args) {
//		register re = new register();
//	}
	
}


5)register_db类

package 注册信息;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.*;

public class register_db extends conn_db implements ActionListener{

	JTextField textacc,textname;
	JButton okButton,resetButton;
	Statement stmt;
	ResultSet rs;
//	double acc;
//	String name;
//	Connection con = null;
	
	public void setaccountField(JTextField a){
		textacc = a;
	}
	public void setnameField(JTextField n){
		textname = n;
	}
	public void setokButton(JButton b1){
		okButton = b1;
	}
	public void setresetButton(JButton b2){
		resetButton = b2;
	}
	
	public void actionPerformed(ActionEvent e){
		if(e.getSource() == okButton){
			if(textacc.getText().equals(""))			//判断用户输入是否为空;
				JOptionPane.showMessageDialog(null, "请输入账号","警告对话框",JOptionPane.WARNING_MESSAGE);
			else if(textname.getText().equals(""))
				JOptionPane.showMessageDialog(null,"请输入姓名","警告对话框",JOptionPane.WARNING_MESSAGE);
			else{
				String acc = textacc.getText();
				String name = textname.getText();
				try {
					connection();
					writeInSql(acc,name);
				} catch (Exception e1) {
					System.out.println("插入失败");
					e1.printStackTrace();
				}
			}
		}
		else if(e.getSource() == resetButton){
			textacc.setText("");
			textname.setText("");
		}
	}
	
	void writeInSql(String acc,String name) throws Exception{
		String sql;
		
		Connection con = super.con;
		Statement stmt = con.createStatement();
		
		//创建并检查数据库表,若没有"my"表,则创建表并执行插入操作,若表已存在,则直接执行操作,插入数据
		sql = "create table if not exists my(account varchar(10),name varchar(20))";
		
		stmt.executeUpdate(sql);
//		System.out.println(sql);		//查错;
		System.out.println("创建表成功");	
		
		//插入存文本框中获取的数据;
		sql = "insert into my(account,name) values('"+acc+"','"+name+"')";
		int rw = stmt.executeUpdate(sql);
//		System.out.println(sql);
		if(rw <= 0){				//判断数据是否插入成功
			JOptionPane.showMessageDialog(null,"注册失败");
		}
		else{
			JOptionPane.showMessageDialog(null, "注册成功");
		}
	}
}



运行结果:



欢迎指导!!!


  • 24
    点赞
  • 160
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值