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