本篇博客运用到:
java连接mysql数据库连接
java对mysql的简单操作——增加数据
下面是注册系统的完整代码
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 java.sql.Statement;
import javax.swing.*;
public class zhuce extends JFrame implements ActionListener{
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/message";
static final String USER = "root";
static final String PASS = "123456";
JButton jb1=new JButton("确定");
JButton jb2=new JButton("返回");
JLabel jl1=new JLabel("账号:");
JLabel jl2=new JLabel("密码:");
JLabel jl3=new JLabel("确认密码:");
JTextField jt1=new JTextField();
JTextField jt2=new JTextField();
JTextField jt3=new JTextField();
public zhuce() {
//添加组件
this.add(jb1);this.add(jb2);
this.add(jl1);this.add(jl2);this.add(jl3);
this.add(jt1);this.add(jt2);this.add(jt3);
//设置组件大小和位置
//括号内分别为x坐标,y坐标,宽,高
jt1.setBounds(90, 18, 180, 25);
jt2.setBounds(90, 68, 180, 25);
jt3.setBounds(90, 118, 180, 25);
jl1.setBounds(44, 12, 70, 35);
jl2.setBounds(44, 62, 70, 35);
jl3.setBounds(30, 112, 70, 35);
jb1.setBounds(60, 160, 70, 35);
jb2.setBounds(190, 160, 70, 35);
//按钮添加监听器
jb1.addActionListener(this);
jb2.addActionListener(this);
//设置窗口属性
this.setTitle("账号注册");
this.setSize(350,250);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setLayout(null);
this.setResizable(false);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e1) {
// TODO Auto-generated method stub
if(e1.getSource()==jb1) {//点击jb1
if(jt1.getText().length()==0) {JOptionPane.showMessageDialog(null, "账号不能为空", "警告",JOptionPane.ERROR_MESSAGE);}
else if(jt2.getText().length()==0||jt3.getText().length()==0) {
JOptionPane.showMessageDialog(null, "密码不能为空!", "警告",JOptionPane.ERROR_MESSAGE);
}
else if(!jt2.getText().equals(jt3.getText())) {
JOptionPane.showMessageDialog(null, "两次密码不相同,请重新输入!", "警告",JOptionPane.ERROR_MESSAGE);
}
else {
Connection conn = null;
Statement stmt = null;
PreparedStatement ps=null;
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL,USER,PASS);
stmt = conn.createStatement();
String sql;
sql = "SELECT * FROM login";
ResultSet rs = stmt.executeQuery(sql);
int pd=0;
while(rs.next()){
// 通过字段检索
String id = rs.getString("id");
if(id.equals(jt1.getText())) {
JOptionPane.showMessageDialog(null, "账号已被注册,请重新输入!", "警告",JOptionPane.ERROR_MESSAGE);
pd=1;
break;
}
}
if(pd==0) {
sql="INSERT INTO login VALUES(?,?)";
ps=conn.prepareStatement(sql);
ps.setString(1, jt1.getText());
ps.setString(2, jt2.getText());
if(ps.executeUpdate()!=0) {
JOptionPane.showMessageDialog(null, "账号注册成功!", "提示",JOptionPane.INFORMATION_MESSAGE );
//new login();
//dispose();
}
}
// 完成后关闭
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
// 处理 JDBC 错误
se.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}finally{
// 关闭资源
try{
if(stmt!=null) stmt.close();
}catch(SQLException se2){
}// 什么都不做
try{
if(conn!=null) conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
}
}
else {//点击jb2
//new login();
//dispose();
//由于本段代码只是注册代码,所以将登陆的跳转注释了
//后面会有整个完整代码
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new zhuce();
}
}
代码运行截图:
运行的界面:
账号或密码为空时,注册失败:
两次密码不相同时,注册失败:
账号已经被人注册时,注册失败:
注册成功: