//User 用户的基本信息,也是USERINFO表中的3个列 package 登陆判断; public class User { private String name; private String loginname; private String loginpsw; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLoginname() { return loginname; } public void setLoginname(String loginname) { this.loginname = loginname; } public String getLoginpsw() { return loginpsw; } public void setLoginpsw(String loginpsw) { this.loginpsw = loginpsw; } }//用于注册和登陆的小小代码块 package 登陆判断; import java.util.Scanner; public class In { public static User getUser(){ User u = new User(); Scanner sc = new Scanner(System.in); System.out.println("请输入登陆名"); u.setLoginname(sc.nextLine()); System.out.println("请输入密码"); u.setLoginpsw(sc.nextLine()); return u; } public static User registerUser(){ User u = new User(); Scanner sc = new Scanner(System.in); System.out.println("请注册用户名名"); u.setName(sc.nextLine()); System.out.println("请注册登陆名"); u.setLoginname(sc.nextLine()); System.out.println("请注册密码"); u.setLoginpsw(sc.nextLine()); return u; } }
//登陆时的检查,判断登陆名和密码是否正确,正确则返回 用户名 package 登陆判断; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Check { public static void checkUser(User u) { try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } String url = "jdbc:oracle:thin:@localhost:1521:orcl"; String user = "scott"; String password = "tiger"; Connection conn = null; ResultSet rs = null; PreparedStatement pst = null; String sql = "Select name from USERINFO where loginname = ? and loginpsw = ? "; try { conn = DriverManager.getConnection(url, user, password); pst = conn.prepareStatement(sql); pst.setString(1, u.getLoginname()); pst.setString(2,u.getLoginpsw()); rs = pst.executeQuery(); while(rs.next()){ u.setName(rs.getString(1)); } } catch (SQLException e) { e.printStackTrace(); }finally{ try { rs.close(); pst.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } if(u.getName() == null || u.getName().isEmpty()){ System.out.println("登陆失败"); }else{ System.out.println("欢迎"+u.getName()+"登陆"); } } }
//注册界面,要判断 登陆名是否有重复,有重复则注册失败。有点小疑问,已用注释标出来 package 登陆判断; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Register { public static void registUser(User u){ try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } String url = "jdbc:oracle:thin:@localhost:1521:orcl"; String user = "scott"; String password = "tiger"; Connection conn = null; String sql = "Insert Into USERINFO values(?,?,?)"; PreparedStatement pst = null; //判断登陆名是否已经存在 Statement s = null; ResultSet rs = null; String sql_ck = "Select LOGINNAME FROM USERINFO"; try { conn = DriverManager.getConnection(url, user, password); pst = conn.prepareStatement(sql); pst.setString(1, u.getName()); pst.setString(2, u.getLoginname()); pst.setString(3, u.getLoginpsw()); //判断登陆名是否已经存在 s = conn.createStatement(); rs = s.executeQuery(sql_ck); while(rs.next()){//为什么用 rs.getString(2)会提示 无效的索引呢 if( rs.getString("LOGINNAME").equals(u.getLoginname()) ){ System.out.println("登陆名已经存在,注册失败"); break; }else{ pst.executeUpdate(); System.out.println("注册成功"); break; } } } catch (SQLException e) { e.printStackTrace(); }finally{ try { rs.close(); pst.close(); s.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
//main界面// //数据库中表的结构式这样 //name(用户名,用于显示), //loginname(登录名,即登陆时输入的ID) //loginpsw(登陆时输入的密码) package 登陆判断; import java.util.Scanner; public class Test { public static void main(String[] args) { int chos = 0; Scanner sc = new Scanner(System.in); System.out.println("\t\t登陆请按1\t\t注册请按2"); chos = sc.nextInt(); switch(chos){ case 1: Check.checkUser(In.getUser());break; case 2: Register.registUser(In.registerUser());break; default: System.out.println("请输入正确的选择");break; } } }
版权声明:本文为DD_ITNAN原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。