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
- Java学习第十八天
- Java学习第十八天
- java学习总结——第十八天
- No_16_0316 Java基础学习第十八天
- .net学习第十八天
- 第十八天学习笔记
- java第十八天
- Java学习总结第十八天Java抽象类
- 设计模式学习第十八天
- 学习python的第十八天
- python爬虫学习第十八天
- JAVA 攻城狮 第十八天
- java基础第十八天 多线程
- Java第十八天~第十九天/11.25~11.26
- 第十八天
- 第十八天
- 第十八天
- Java学习第八天
- 【从头开始写操作系统系列】实现一个 GDT(3)
- 黑马程序员——java基础——集合框架
- Windows 10 主要版本安装地址记录
- hdu-4597 (博弈DP)
- ACM挑战程序设计竞赛1.1抽签
- Java学习第十八天
- eclipse中svn提交时提示文件被锁
- 在QGraphicsItem中使用signal和slot机制
- 伪静态网站分享到微信链接打不开的解决办法
- 不仅仅只控制代码,也要控制数据
- 打造安全的App!iOS安全系列之 HTTPS
- 代码分类之实现复制文件或文件夹
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- leetcode_Combination Sum III