使用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;
}
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。