只用了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();
- //
- // }
- }
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();
- }
- }
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;
- }
- }
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();
- // }
- }
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();
// }
}
- 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, "注册成功");
- }
- }
- }