好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

使用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测试数据mit();

                    } 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

查看更多关于使用JDBC工具类实现简单的登录管理系统的详细内容...

  阅读:18次