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

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

(0)

相关推荐

  • java实现登录案例

    本文实例为大家分享了java实现登录案例的具体代码,供大家参考,具体内容如下 一.环境搭建 JDK1.8  + Tomcat1.8 二.目录结构 三.代码示例 3.1.fail.html页面 <!DOCTYPE html> <html> <head> <title>faill.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,

  • JavaWeb使用mvc模式实现登录功能

    目录 部署项目.环境搭建 详细内容 登录实现 部署项目.环境搭建 详细内容 1.导包 2.web >> index.jsp              web >> login.jsp              web >> success.jsp 1)  web >> index.jsp <%@ page contentType="text/html;charset=UTF-8" language="java"

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

    使用JDBC工具类实现一个简单的登录管理系统,供大家参考,具体内容如下 实现要求: 在控制台实现一个用户管理系统,包含3个功能: 1.用户登录  2.注册  3.用户查询. 启动程序后,进入主菜单选项: 输出:“请选择您要操作的功能:1.用户登录  2.新用户注册 3所有用户查询: ” 功能说明: 1.用户登录: 请用户输入用户名和密码,接收后,去数据库的users表中查询是否存在该用户名.并输出合理的提示,例如:登录成功!  用户名不存在! 密码错误! 不论登录是否成功,都返回主菜单界面. 2

  • JDBC工具类实现登录功能

    本文实例为大家分享了JDBC工具类实现登录功能的具体代码,供大家参考,具体内容如下 我们使用JDBC实现数据库的增删改查,代码基本差不多,有很多重复,所以我们可以把这些重复的代码写成一个工具类,使用的时候直接调用就可以了.下面以实现登录功能的案例来介绍. 创建数据库,插入数据 use student; create table user( id int primary key auto_increment, username varchar(32), password varchar(32) )

  • java中封装JDBC工具类的实例分析

    对于能够重复使用的代码,我们最好的方法是对它们进行封装,然后在下次使用的使用就可以直接调用了.本篇所要提到的是JDBC工具类,相信大家在学习java时都接触过.那么对于封装它的方法,本篇先对工具类进行简单的说明,列出有关的封装步骤,然后带来相关的实例. 1.说明 在java开发过程中,代码中时常用到一些Scanner.Random一样的类,他们是键盘录入,生成随机数的类,像一个工具一样,在java中被称为工具类. 2.步骤 封装JDBC工具类 加入获取数据库连接对象的方法 加入释放连接的方法 3

  • List转换成Map工具类的简单实例

    实例如下: public class List2MapUtils { /** * K: key class type, V: value class type * * @param sourceList * @param keyName * key property * @param keyClass * key Class type * @return */ public static <K, V> Map<K, V> convert2Map(List<V> sour

  • java使用jdbc连接数据库工具类和jdbc连接mysql数据示例

    这个工具类使用简单,实例化直接调用就可以了,大家还可以方便的根据自己的需要在里面增加自己的功能 复制代码 代码如下: package com.lanp.ajax.db; import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException; /** * 连接数据库的工具类,被定

  • Java Char的简单工具类CharUtil分享

    博客的第一篇文章,关于对字符char的简单操作, char,java基本数据类型之一,底层保存的的是两个字节的int整数.默认显示的是Unicode这个int整数索引位置的字符.具体的就不详解了. 版本1:以下拥有查询是否数字,是否字母,是否大小写字母,获得字符的int表示. 虽然简单,也代表能够增强. package cn.util; /** * 字符工具类: 一些简单的操作方法. * * @author jxlys @version1.0 */ public class CharUtil {

  • 如何使用JDBC实现工具类抽取

    这篇文章主要介绍了如何使用JDBC实现工具类抽取,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.JDBC工具类抽取 上一篇做了JDBC的基本操作,但是获取连接及释放资源是比较重复的操作,可以抽取工具类而达到代码重用的目的 工程结构如图 JDBC工具类代码 db.properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://192.168.47.151:3306/web?useUnicode

  • Java JDBC自定义封装工具类的步骤和完整代码

    封装JDBC工具类的作用可以优化代码,提高开发效率 步骤 ① 创建配置文件(config.properties),用于存放注册驱动和连接数据库时所需要的参数值 ② 自定义一个类(JDBCUtils.java) ③ 实现构造私有方法 private JDBCUtils(){} ④ 声明所需要的配置变量 private static String driverClass; private static String url; private static String username; priva

  • JavaWeb简单用户登录注册实例代码(有验证码)

    需求 编写login登录界面(用户名,密码,验证码,登陆按钮,注册按钮) 设计关系数据库(编号,用户名,密码) 编写注册功能,将数据存储在数据库中.(姓名不能重复,设为主键,重复会注册失败) 编写登录功能 .首先获取验证码,先判断验证码是否正确,不正确则显示验证码错误.验证码正确后再获取用户名和密码,进行数据库的搜索比对,若正确则重定向到成功的界面,并且将用户名显示. jar包 技术选型 Servlet + JSP + Mysql + JDBCTemplate + Druid + BeanUti

  • Java常用类库Apache Commons工具类说明及使用实例详解

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils 提供了对于JavaBean进行各种操作,克隆对象,属性等等. Betwixt XML与Java对象之间相互转换. Codec 处理常用的编码方法的工具类包 例如DES.SHA1.MD5.Base64等. Collections java集合框架操作. Compress java提供文件打包 压缩类库. Con

随机推荐