服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 使用JDBC工具类实现简单的登录管理系统

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

2022-07-22 11:35勤奋的小镇青年 Java教程

这篇文章主要为大家详细介绍了使用JDBC工具类实现简单的登录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

使用JDBC工具类实现一个简单的登录管理系统,供大家参考,具体内容如下

实现要求:

在控制台实现一个用户管理系统,包含3个功能:

1.用户登录  2.注册  3.用户查询。

启动程序后,进入主菜单选项:

输出:“请选择您要操作的功能:1.用户登录  2.新用户注册 3所有用户查询: ”

功能说明:

1.用户登录:

请用户输入用户名和密码,接收后,去数据库的users表中查询是否存在该用户名。并输出合理的提示,例如:登录成功!  用户名不存在! 密码错误!

不论登录是否成功,都返回主菜单界面。

2.新用户注册 :

请用户输入用户名和密码,接收后,去数据库的users表中执行新增操作。并输出合理的提示,例如:注册成功!  用户名已存在! 

3.所有用户查询:

该功能必须在用户登录后方可查看,如果用户已经登录成功,即可在控制台查看所有用户的所有信息。如果没有登录,提示:您还没有登录呢,无权查看用户信息!

第一步:创建JDBCUtils类和jdbc.properties文件

?
1
2
3
user=root
password=123456
url=jdbc:mysql://localhost:3306/db2?useSSLfalse&serverTimezone=UTC
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
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;
            }
        }
    }
}

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

原文链接:https://blog.csdn.net/weixin_53106424/article/details/112389674

延伸 · 阅读

精彩推荐