用jdbc实现登陆注册和重置密码

用jdbc实现登陆注册和重置密码

其中注册用到了Dbutils,登录重置没有搞明白怎么用Dbutils弄。

注册就是添加方法,向数据库表添加账号密码。

登录就是条件查询,查询出符合条件的则输出登陆成功,跳转到登陆后页面。

重置先调用登陆方法,对输入的旧账号密码进行判断,再根据条件修改密码。

Dbutils用法可看其他文章,此处不做参考。

但登录和重置功能完整。

当输入错误或输入完成后会跳出提示,提示是否继续,只有三次错误机会

package com.ambow.view;

import com.ambow.po.User;
import com.ambow.service.UserService;
import com.ambow.util.BaseDao;

import java.sql.*;
import java.util.Scanner;

public class UserView {
    static Scanner sc = new Scanner(System.in);
    static UserService urs = new UserService();


    public static void main(String[] args) {
        while (true) {
            System.out.println("正在进入主页面。。。");
            System.out.println("*******************登录界面*******************");
            System.out.println("请选择:\t1.注册\t2.登录\t3.重置密码\t0.退出");
            System.out.println("*********************************************");
            System.out.println("请输入:");
            int i = sc.nextInt();
            if (0 == i) {//判断0,1
                System.out.print("成功退出系统");
                System.exit(0);
                break;
            } else if (1 == i) {
                System.out.println("注册");
                regist();
            } else if (2 == i) {
                System.out.println("登录");
                int cont = 3;
                String a = null;
                do {
                    while (cont != 0) {
                        System.out.println("请输入账号");
                        String username = sc.next();
                        System.out.println("请输入密码");
                        String password = sc.next();
                        System.out.println("正在登陆中。。。");
                        boolean loginflag = new UserView().loginUser(username, password);
                        if (loginflag) {
                            StudentView studentView = new StudentView();
                            studentView.main();//调用StudentView的main方法跳转
                        } else {
                            cont--;
                            System.out.println("密码错误,你还有" + cont + "次机会");
                            if (cont == 0) {
                                System.exit(0);
                            }
                        }
                        System.out.println("是否继续? Y 是,其他键结束");
                        a = sc.next();//输入的字符串
                        break;
                    }
                } while (a.equals("y"));


            } else if (3 == i) {
                System.out.println("重置密码");
                resetUser();
            } else {
                System.out.println("命令输入有误!请检查后重新输入");
            }
        }
    }
//注册
    private static void regist() {
        System.out.println("输入新增账号");
        String username = sc.next();
        System.out.println("输入新增密码");
        String password = sc.next();
//创建wangzhe对象,存储输入的新增信息
        User ri = new User(username, password);
//调用service层的新增方法
        boolean flsg = urs.registUser(ri);
        if (flsg) {
            System.out.println("注册成功,请牢记密码: " + password + ",请返回登录界面进行登录");
            System.out.println("欢迎回到登陆页面");
        } else {
            System.out.println("此账号 :" + username + "已注册");
        }
    }

//登录
    private static boolean loginUser(String username, String password) {

        if (username == null || password == null) {
            return false;
        }//账号和密码不为空
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            String sql = "select * from user where username = '" + username + "'and password = '" + password + "'";
            conn = BaseDao.getConnection();
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);
            return rs.next();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            BaseDao.close(rs, stmt, conn);//释放资源
        }
    }
//重置
    private static boolean resetUser() {
        int cont = 3;
        Connection conn = null;
        Statement stmt = null;
        boolean rs = false;
        String a = null;
        do {
            System.out.println("请输入账号");
            String username = sc.next();
            System.out.println("请输入旧密码");
            String password = sc.next();
            System.out.println("正在核对中。。。");
            boolean loginflag = new UserView().loginUser(username, password);//调用登录方法验证账号密码
            if (loginflag) {
                System.out.println("正确,请输入新密码");
                String password2 = sc.next();
                String sql = "update user set password ='" + password2 + "' where username = '" + username + "'";
                System.out.println("修改成功");
                try {
                    conn = BaseDao.getConnection();
                    stmt = conn.createStatement();
                    rs = stmt.execute(sql);
//                return rs.next();
                } catch (SQLException e) {
                    throw new RuntimeException(e);
                } finally {
                    BaseDao.close(null, stmt, conn);//释放资源
                }
                break;
            } else {
                cont--;
                System.out.println("旧密码错误,你还有" + cont + "次机会");
                if (cont == 0) {
                    System.out.println("你没机会了!!!");
                    break;
                }
//                System.exit(0);
                System.out.println("是否继续? Y 是,其他键结束");
                a = sc.next();//输入的字符串
            }
        } while (a.equals("y"));
        return rs;
    }

}

关于Connection ,Statement ,ResultSet ——实现与数据的链接并发送语句和接受返回数据
举例说明:

public class WangZheDao {
	//查询方法
	public List<WangZhe> queryAllWangZhe() {
			Connection conn = null;
			PreparedStatement ps = null;
			ResultSet rs = null;
			//创建集合,将结果集中的数据存储起来
		List<WangZhe> wangzhes = new ArrayList<WangZhe>();
		try {
			String sql = "select * from wangzhe";
			//获取数据库连接对象
			conn = DBConnection.getConnection();
			//预编译
			ps = conn.prepareStatement(sql);
			//赋值(给sql语句中的?赋值,有就赋值,没有就不管)
			//执行sql语句,得到resultset结果集
			rs = ps.executeQuery();

		//遍历结果集
		while (rs.next()) {
			//创建wangzhe对象,用于存储每次遍历的结果
			WangZhe wz = new WangZhe();
			wz.setId(rs.getInt(1));
			wz.setNo(rs.getString(2));
			wz.setCode(rs.getString(3));
			//将对象存储到集合中
			wangzhes.add(wz);
		}
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}finally {
			//关闭操作
			DBConnection.CloseAll(conn, ps, rs);
		}

		return wangzhes;
	}
	//添加方法
	public int addWangZhe(WangZhe aw) {
		String sql = "insert into wangzhe(no,code) values(?,?)";
		Connection conn = null;
		PreparedStatement pr = null;
		int ai =0;
		try {
			conn = DBConnection.getConnection();
			pr = conn.prepareStatement(sql);
			//赋值---把值给sql语句
			pr.setString(1, aw.getNo());
			pr.setString(2, aw.getCode());
			//执行
			ai = pr.executeUpdate();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		} finally {
			//关闭
			DBConnection.CloseAll(conn, pr, null);
		}
		return ai;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值