Java学习第十八天

来源:互联网 发布:手机网络新游戏 编辑:程序博客网 时间:2024/05/19 06:47

SQLManager

package com.donghe.test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/** * 数据库连接 *  * @author Administrator * */public class SQLManager {    // 单例设计模式    public Statement statement;// 操作类    private static SQLManager manager;// 需要设置为静态的    private Connection conn;    public static synchronized SQLManager newInstance() {// synchronized避免多线程进来创建不同的对象                                                            // SQLManager(返回值类型)        if (manager == null) {            manager = new SQLManager();        }        return manager;    }    private SQLManager() {        // 链接数据库的驱动        String driver = "com.mysql.jdbc.Driver";// com.mysql.jdbc包下的Driver        // URL指向要访问的数据库名        String url = "jdbc:mysql://localhost:3306/clazz";// localhost本地主机(前面//)3306端口号(前面:)clazz数据库名称(前面/)        // MySQL配置时的用户名        String user = "root";        // Java连接MySQL配置时的密码        String password = "201216328";// 自己设置的密码        try {            // 加载驱动            Class.forName(driver);// 返回Driver的Class对象            // 与数据库建立连接            conn = DriverManager.getConnection(url, user, password);// 试图建立到给定数据库URL的连接            // 首先看连接是不是开着的            if (!conn.isClosed()) {                // 数据库操作类Statement(接口) 在sql包中不是object中的statement(类)                statement = conn.createStatement();// Connection.createStatement()创建一个Statement对象来将SQL语句发送到数据库。                statement.execute(                        "create table if not exists user(id int(11) not null primary key auto_increment,user_name varchar(30) binary not null,password varchar(30) binary  not null)");                        // binary区分大小写的 primary key主键 if not exists如果不存在就创建                // String insert="insert                // intostudent(stu_name,age,sex)values('李四',14,1)";                // statement.execute(insert);                // String insert1="insert                // intostudent(stu_name,age,sex)values('张三',16,0)";                // statement.execute(insert1);                // String update="update Student set age=15 wherestu_name='张三'";                // statement.execute(update);                // String delete="delete from student where age>14";                // statement.execute(delete);                // String select = "select *from student";                // ResultSet set = statement.executeQuery(select);// 得到一个结果集                // set.first();// 游标放在set的第一行                // while (!set.isAfterLast()) {//                // ResultSet.isAfterLast()获取光标是否位于此                // // ResultSet 对象的最后一行之后。                // System.out.println(set.getString("stu_name"));//                // columnLabel列标记                // // row行                // set.next();//游标往下移                // }            } else {                System.out.println("请打开数据库");            }        } catch (ClassNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    public Statement getStatement() {        return statement;    }    public void setStatement(Statement statement) {        this.statement = statement;    }    public Connection getConn() {        return conn;    }    public void setConn(Connection conn) {        this.conn = conn;    }}

SQLOperate

package com.donghe.test;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class SQLOperate {    private static SQLOperate operate;//静态的供静态方法调用    private SQLOperate(){//单例设计模式  1.私有构造器    }    //newinstance只是方法名    public static synchronized SQLOperate newinstance(){//2.提供方法得到新实例(只有一个synchronized同步的防止多线程的情况)static可以通过类名.调用   类型为类名因为你要得到的是该类的一个对象        if(operate==null){            operate=new SQLOperate();//通过构造器构造        }        return  operate;//返回的是实例    }    private boolean isSignIn=false;    /**     * 功能:判断是否登陆成功       * @param userName 用户账号     * @param password 用户密码     * @return true登陆成功 false登录失败     */    public boolean signIn(String userName,String password){        //预处理操作类        Connection connection=SQLManager.newInstance().getConn();//得到连接        try {            if(!connection.isClosed()){//连接是否关闭                //创建数据库操作类            PreparedStatement preparedStatement=connection.prepareStatement("select * from user where user_name= ? and password= ?");//必须用and            preparedStatement.setString(1, userName);//给第一个参数user_name=?赋值userName            preparedStatement.setString(2, password);//给第二个参数password=?赋值password            ResultSet set=preparedStatement.executeQuery();//结果集            set.last();//游标在最后一行            int num=set.getRow();//最后一行的行号            return num==1;//1就是true            }        } catch (SQLException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        }        return isSignIn=false;    }}

Register

package com.donghe.test;import java.awt.BorderLayout;import java.awt.EventQueue;import java.awt.Frame;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.regex.Matcher;import java.util.regex.Pattern;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JTextField;import javax.swing.JButton;import javax.swing.JLabel;//不要使用全角空格public class Register extends JFrame {    private JPanel contentPane;    private JTextField textFieldUserName;    private JTextField textFieldPassword;    private static Register frame;    boolean isRight = false;    boolean isRight2 = false;    /**     * Launch the application.     */    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() {            public void run() {                try {                    frame = new Register();                    frame.setVisible(true);                } catch (Exception e) {                    e.printStackTrace();                }            }        });    }    /**     * Create the frame.     */    public Register() {        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        setBounds(100, 100, 450, 300);        contentPane = new JPanel();        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));        setContentPane(contentPane);        contentPane.setLayout(null);        textFieldUserName = new JTextField();        textFieldUserName.setBounds(129, 29, 168, 36);        contentPane.add(textFieldUserName);        textFieldUserName.setColumns(10);        textFieldPassword = new JTextField();        textFieldPassword.setBounds(129, 90, 168, 36);        contentPane.add(textFieldPassword);        textFieldPassword.setColumns(10);        JButton btnNewButton = new JButton("提交");        btnNewButton.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                // TODO Auto-generated method stub                String userName = textFieldUserName.getText();                String password = textFieldPassword.getText();                while (true) {                    Pattern p = Pattern.compile("^\\w{6,16}$");                    Matcher m = p.matcher(userName);                    isRight = m.matches();                    if (isRight) {                        Pattern p1 = Pattern.compile("^\\w{6,16}$");                        Matcher m1 = p.matcher(password);                        isRight2 = m1.matches();                        if (isRight2) {                            Statement state = SQLManager.newInstance().statement;                            String sql = "select * from user where user_name='" + userName + "'";                            try {                                ResultSet set = state.executeQuery(sql);// 结果集                                set.last();                                int num = set.getRow();                                if (num > 0) {                                    System.out.println("该用户已存在");                                    return;                                } else {                                    String register = "insert into user(user_name,password) values ('" + userName                                            + "','" + password + "')";                                    state.execute(register);                                    System.out.println("注册成功");//                                  RegisterSuccess success=new RegisterSuccess();//                                  Frame frame=success.getFrame();//                                  frame.setVisible(true);                                    SignIn si=new SignIn();                                    Frame frame=si.getFrame();                                    frame.setVisible(true);                                    return;                                }                            } catch (SQLException e1) {                                // TODO Auto-generated catch block                                e1.printStackTrace();                            }                        }                    } else {                        System.out.println("你的输入不规范,请重新输入");                        textFieldUserName.setText("");                        textFieldPassword.setText("");                        return;                    }                }            }        });        btnNewButton.setBounds(129, 155, 168, 36);        contentPane.add(btnNewButton);        JLabel lblNewLabel = new JLabel("用户账号");        lblNewLabel.setBounds(27, 29, 68, 36);        contentPane.add(lblNewLabel);        JLabel lblNewLabel_1 = new JLabel("用户密码");        lblNewLabel_1.setBounds(27, 100, 68, 26);        contentPane.add(lblNewLabel_1);    }    public static Register getFrame() {        frame = new Register();        return frame;    }    public static void setFrame(Register frame) {        Register.frame = frame;    }}

SignIn

package com.donghe.test;import java.awt.BorderLayout;import java.awt.EventQueue;import java.awt.Frame;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.event.AncestorEvent;import javax.swing.event.AncestorListener;import javax.swing.JTextField;import javax.swing.JLabel;import javax.print.attribute.ResolutionSyntax;import javax.swing.JButton;public class SignIn extends JFrame {    private JPanel contentPane;    private JTextField textFieldUserName;    private JTextField textFieldPassword;    private static SignIn frame;//  private boolean isSignIn=false;    /**     * Launch the application.     */    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() {            public void run() {                try {                    frame = new SignIn();                    frame.setVisible(true);                } catch (Exception e) {                    e.printStackTrace();                }            }        });    }    /**     * Create the frame.     */    public SignIn() {        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        setBounds(100, 100, 450, 300);        contentPane = new JPanel();        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));        setContentPane(contentPane);        contentPane.setLayout(null);        textFieldUserName = new JTextField();        textFieldUserName.setBounds(157, 42, 170, 33);        contentPane.add(textFieldUserName);        textFieldUserName.setColumns(10);        textFieldPassword = new JTextField();        textFieldPassword.setBounds(157, 106, 170, 33);        contentPane.add(textFieldPassword);        textFieldPassword.setColumns(10);        JLabel lblNewLabel = new JLabel("用户账号");        lblNewLabel.setBounds(66, 46, 54, 24);        contentPane.add(lblNewLabel);        JLabel lblNewLabel_1 = new JLabel("用户密码");        lblNewLabel_1.setBounds(66, 110, 54, 24);        contentPane.add(lblNewLabel_1);        JButton btnNewButton = new JButton("登录");        btnNewButton.setBounds(157, 167, 80, 33);        contentPane.add(btnNewButton);        JButton btnNewButton_1 = new JButton("注册");        btnNewButton_1.setBounds(260, 167, 67, 28);        contentPane.add(btnNewButton_1);        btnNewButton_1.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                // TODO Auto-generated method stub                Register register=new Register();                Frame frame=register.getFrame();                frame.setVisible(true);            }        });        btnNewButton.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                // TODO Auto-generated method stub                String userName=textFieldUserName.getText();                String password=textFieldPassword.getText();//              Statement state=SQLManager.newInstance().statement;//              String  sql="select * from user where user_name='"+userName+"' and password='"+password+"'";//              try {//                  ResultSet set=state.executeQuery(sql);//                  set.last();//                  int num=set.getRow();//                  System.out.println(num);//              } catch (SQLException e1) {//                  // TODO Auto-generated catch block//                  e1.printStackTrace();//              }                boolean isSignIn=SQLOperate.newinstance().signIn(userName, password);//是否登陆成功                if(isSignIn){                    System.out.println("登陆成功");                }else{                    System.out.println("登录失败");                }            }        });    }    public static SignIn getFrame() {        frame = new SignIn();        return frame;    }    public static void setFrame(SignIn frame) {        SignIn.frame = frame;    }}

RegisterSuccess

package com.donghe.test;import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JLabel;public class RegisterSuccess extends JFrame {    private JPanel contentPane;    private static RegisterSuccess frame;    /**     * Launch the application.     */    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() {            public void run() {                try {                    frame = new RegisterSuccess();                    frame.setVisible(true);                } catch (Exception e) {                    e.printStackTrace();                }            }        });    }    /**     * Create the frame.     */    public RegisterSuccess() {        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        setBounds(100, 100, 250, 190);        contentPane = new JPanel();        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));        setContentPane(contentPane);        contentPane.setLayout(null);        JLabel lblNewLabel = new JLabel("恭喜你注册成功!");        lblNewLabel.setBounds(62, 43, 193, 61);        contentPane.add(lblNewLabel);    }    public static RegisterSuccess getFrame() {        frame = new RegisterSuccess();        return frame;    }    public static void setFrame(RegisterSuccess frame) {        RegisterSuccess.frame = frame;    }}
0 0
原创粉丝点击