文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

使用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;
            }
        }
    }
}

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯