使用JDBC工具类实现简单的登录管理系统

 更新时间:2022年02月24日 10:02:18   作者:勤奋的小镇青年、  
这篇文章主要为大家详细介绍了使用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;
            }
        }
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java实现数据结构单链表示例(java单链表)

    java实现数据结构单链表示例(java单链表)

    这篇文章主要介绍了java数据结构实现单链表示例,需要的朋友可以参考下
    2014-03-03
  • 教你springboot+dubbo快速启动的方法

    教你springboot+dubbo快速启动的方法

    这篇文章主要介绍了springboot+dubbo快速启动的方法,dubbo的角色广泛的分为三类provider,comsumer,注册中心,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下
    2022-04-04
  • java实现图片上加文字水印(SpringMVC + Jsp)

    java实现图片上加文字水印(SpringMVC + Jsp)

    这篇文章主要为大家详细介绍了java实现在图片上加文字水印的方法,水印可以是图片或者文字,操作方便,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • eclipse自动提示和自动补全功能实现方法

    eclipse自动提示和自动补全功能实现方法

    这篇文章主要介绍了eclipse自动提示和自动补全的相关内容,文中向大家分享了二者的实现方法代码,需要的朋友可以了解下。
    2017-09-09
  • 一篇文章带你搞定JAVA泛型

    一篇文章带你搞定JAVA泛型

    泛型是Java中的高级概念,也是构建框架必备技能,比如各种集合类都是泛型实现的,今天详细聊聊Java中的泛型概念,希望有所收获
    2021-07-07
  • Spring Security登录添加验证码的实现过程

    Spring Security登录添加验证码的实现过程

    这篇文章主要介绍了Spring Security登录添加验证码的实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • java操作json对象出现StackOverflow错误的问题及解决

    java操作json对象出现StackOverflow错误的问题及解决

    这篇文章主要介绍了java操作json对象出现StackOverflow错误的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java编程实现递增排序链表的合并

    Java编程实现递增排序链表的合并

    这篇文章主要介绍了Java编程实现递增排序链表的合并,两种方法,代码分享给大家,供需要的朋友参考。
    2017-10-10
  • Ubuntu安装JDK与IntelliJ IDEA的详细过程

    Ubuntu安装JDK与IntelliJ IDEA的详细过程

    APT是Linux系统上的包管理工具,能自动解决软件包依赖关系并从远程存储库中获取安装软件包,这篇文章主要介绍了Ubuntu安装JDK与IntelliJ IDEA的过程,需要的朋友可以参考下
    2023-08-08
  • go语言题解LeetCode88合并两个有序数组示例

    go语言题解LeetCode88合并两个有序数组示例

    这篇文章主要为大家介绍了go语言题解LeetCode88合并两个有序数组示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12

最新评论