使用JDBC工具类实现简单的登录管理系统
使用JDBC工具类实现一个简单的登录管理系统,供大家参考,具体内容如下
实现要求:
在控制台实现一个用户管理系统,包含3个功能:
1.用户登录 2.注册 3.用户查询。
启动程序后,进入主菜单选项:
输出:“请选择您要操作的功能:1.用户登录 2.新用户注册 3所有用户查询: ”
功能说明:
1.用户登录:
请用户输入用户名和密码,接收后,去数据库的users表中查询是否存在该用户名。并输出合理的提示,例如:登录成功! 用户名不存在! 密码错误!
不论登录是否成功,都返回主菜单界面。
2.新用户注册 :
请用户输入用户名和密码,接收后,去数据库的users表中执行新增操作。并输出合理的提示,例如:注册成功! 用户名已存在!
3.所有用户查询:
该功能必须在用户登录后方可查看,如果用户已经登录成功,即可在控制台查看所有用户的所有信息。如果没有登录,提示:您还没有登录呢,无权查看用户信息!
第一步:创建JDBCUtils类和jdbc.properties文件
user=root password=123456 url=jdbc:mysql://localhost:3306/db2?useSSLfalse&serverTimezone=UTC
//1.获取连接对象 2.关闭连接对象---取代单元测试中的 @Before 和 @After 3.实现登录验证 public class JDBCUtils { private static Connection conn; private static Properties prop; private static PreparedStatement prep; private static ResultSet rs; static { try { //使用类加载器加载jdbc.properties文件,返回一个字节流,和Properties关联在一起 InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties"); //创建Properties对象 prop = new Properties(); prop.load(is); } catch (Exception e) { e.printStackTrace(); } } //1.获取连接对象 public static Connection getConnection(){ try { return DriverManager.getConnection(prop.getProperty("url"),prop); } catch (SQLException e) { e.printStackTrace(); } return null; } //2.释放资源 public static void close(ResultSet rs, Statement state,Connection conn){ if(rs !=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(state !=null){ try { state.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn !=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } 3.//判断登录 public static boolean login(String user,String password){ //3.1获取连接对象 Connection conn = JDBCUtils.getConnection(); try { //3.2定义sql String sql="select * from user where username=? and password=?"; //3.3获取执行sql的对象 prep = conn.prepareStatement(sql); //3.3.1 给占位符赋值 prep.setString(1,user); prep.setString(2,password); //3.4执行sql ResultSet rs = prep.executeQuery(); return rs.next(); } catch (SQLException e) { e.printStackTrace(); } finally{ //3.4调用关闭连接静态方法 JDBCUtils.close(rs,prep,conn); } return false; } }
第二步:创建测试类:Hello01
public class Hello01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Connection conn=null; PreparedStatement prep=null; ResultSet rs=null; Statement state=null; //判断是否登录过,如果没有登录,就无法查询 boolean a=false; //判断用户是否登录,登录过就无法再次登录 boolean b=true; String name; String psw; while (true){ System.out.println("请输入你要执行的操作:1.登录 2.注册 3.查询"); int i = sc.nextInt(); switch (i){ case 1: if(b){ System.out.println("请输入你的账号:"); name= sc.next(); System.out.println("请输入你的密码:"); psw= sc.next(); //JDBCUtils.login(name,psw) 这个方法的返回值是Boolean类型 可以当if的条件判断 if(JDBCUtils.login(name,psw)){ System.out.println("恭喜您登录成功"); //登录成功 a的值变为turn a=true; } else { System.out.println("不好意思登录失败,请重新操作!!!"); } b=false; }else { System.out.println("您已经登录!!!"); } break; case 2: try { System.out.println("请输入您要注册的账号:"); name = sc.next(); conn = JDBCUtils.getConnection(); //开启事务 conn.setAutoCommit(false); while (true){ String sql = "select * from user where username=?"; prep = conn.prepareStatement(sql); prep.setString(1,name); rs = prep.executeQuery(); if(rs.next()){ System.out.println("用户名已存在,请重新输入:"); name = sc.next(); }else { break; } } System.out.println("请输入您的密码:"); psw = sc.next(); String sql1="insert into user values (null,?,?)"; prep = conn.prepareStatement(sql1); prep.setString(1,name); prep.setString(2,psw); prep.executeUpdate(); //int i1=3/0; System.out.println("恭喜您注册成功!!!"); //提交事务 conn.commit(); } catch (SQLException e) { try { //事务回滚 conn.rollback(); } catch (SQLException ex) { ex.printStackTrace(); } e.printStackTrace(); }finally { JDBCUtils.close(rs,prep,conn); } break; case 3: //当a的值为turn时才可以查询 否则返回操作页面 if(a){ try { conn = JDBCUtils.getConnection(); String sql ="select * from user"; state = conn.createStatement(); rs = state.executeQuery(sql); ArrayList<User> users = new ArrayList<>(); while (rs.next()){ int id = rs.getInt("id"); String username = rs.getString("username"); String password = rs.getString("password"); User user = new User(id,username,password); users.add(user); System.out.println(user); } } catch (SQLException e) { e.printStackTrace(); } finally { JDBCUtils.close(rs,state,conn); } }else { System.out.println("请先登录,在查询!!!"); } break; } } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
赞 (0)