jdbc用户登录,使用jdbc操作数据库
用JDBC工具类实现一个简单的登录管理系统,供你参考。具体情况如下
00-1010在控制台实现用户管理系统,包括3个功能:
1.用户登录 2.注册 3.用户查询。
启动程序后,进入主菜单选项:
输出:“请选择您要操作的功能:1。用户登录2。新用户注册3所有用户查询:"
实现要求:
1.用户登录:
请输入用户名和密码,收到后到数据库的users表查询用户名是否存在。并输出合理的提示,例如:登录成功!用户名不存在!密码错误!
无论登录成功与否,返回主菜单界面。
2.新用户注册 :
请输入用户名和密码,并在收到它们后,转到数据库的用户表来执行新的操作。并输出合理的提示,如:注册成功!用户名已经存在!
3.所有用户查询:
该功能只有在用户登录后才能查看。如果用户成功登录,可以在控制台中查看所有用户的所有信息。如果未登录,提示:您尚未登录,无权查看用户信息!
创建第一步:JDBC utils类和jdbc.properties文件。
user=root password=123456 URL=JDBC : my SQL ://localhost :3306/DB2?Uselfaleservertimezone=UTC//1。获取连接对象2。关闭连接对象-在单元测试中替换@Before和@After 3。实现登录验证公共类JDBC utils { private static connection conn;私有静态属性prop私有静态PreparedStatement prep私有静态结果集RS;Static {try {//使用类加载器加载jdbc。属性文件,并返回一个与属性相关联的字节流。InputStream is=JDBC utils . class . getclass loader()。GetResourceStream( JDBC . properties );//创建Properties对象prop=new Properties();prop.load(是);} catch(Exception e){ e . printstacktrace();}} //1.获取连接对象公共静态连接getconnection(){ try { return driver manager . getconnection(prop . getproperty( URL ),prop);} catch(SQLException e){ e . printstacktrace();}返回null} //2.释放资源公共静态void close (resultsets 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.//判断公共静态布尔登录的登录(字符串user,字符串passwor
d){ //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; } } }}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。