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