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

网友投稿 701 2022-10-27

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

使用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();

CHIofkILU } 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 users = new ArrayList<>();

while (rs.next()){

int id = rs.getInt(http://"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;

}

}

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:OverVue一个为Vue程序提供“异步优先”状态管理的库
下一篇:cli-init - 最简单的方法来构建Golang命令行应用程序
相关文章

 发表评论

暂时没有评论,来抢沙发吧~