DBUtil实战(学生管理系统)

利用上篇博客创建的DBItil工具类中的方法(可参考:DBUtil数据库工具类),本篇博客将创建一个简易的学生管理系统

实战

import java.sql.ResultSet;
import java.util.Scanner;

public class Realize2 {

    static boolean flag = true;
    public static void main(String[] args) {
	while(flag == true) {
	    menu();
	}
    }
    static void menu() {
	System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~");
	System.out.println("~~~~~~~~学生管理系统~~~~~~~~");
	System.out.println("_______1.添加学生信息_______");
	System.out.println("_______2.删除学生信息_______");
	System.out.println("_______3.修改学生信息_______");
	System.out.println("_______4.查询学生信息_______");
	System.out.println("_______0.退出系统__________");
	System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~");
	Scanner scanner = new Scanner(System.in);
	int num = scanner.nextInt();
    switch (num) {
        case 1: {
	    System.out.println("请先输入学号:");
	    String id = scanner.next();
	    if(DBUtil.exist("select * from user_info where id=?",id)) {
	        System.err.println("学号重复!添加失败");
		return;
	    }
	    System.out.println("请先输入姓名:");
	    String name = scanner.next();
	    System.out.println("请输入电话:");
	    String mobile = scanner.next();
	    System.out.println("请输入地址:");
	    String address = scanner.next();
	    if(DBUtil.upDate("insert into user_info (id,name,mobile,address) values (?,?,?,?)",id,name,mobile,address)){
	        System.out.println("添加成功!");
	        break;
	    }else {
                System.err.println("添加失败!SQL语句错误!");
		break;
	    }	
        }
	case 2: {
            System.out.println("请先输入学号:");
	    String id = scanner.next();
	    if(!DBUtil.exist("select * from user_info where id=?",id)) {
                System.err.println("学号不存在!删除失败");
	        return;
	    }
	    String sql = "delete from user_info where id='"+id+"'";
	    if(DBUtil.upDate("delete from user_info where id=?",id)) {
	        System.out.println("删除成功!");
	    }else {
	        System.err.println("删除失败!");
	    }
	    break;	
        }
	case 3: {
	    System.out.println("请先输入学号:");
	    String id = scanner.next();
	    if(!DBUtil.exist("select * from user_info where id=?",id)) {
	        System.err.println("学号不存在!修改失败");
	        return;
	    }
	    System.out.println("请再输入修改后的姓名:");
	    String name = scanner.next();
	    System.out.println("请再输入修改后的电话:");
	    String mobile = scanner.next();
	    System.out.println("请再输入修改后的地址:");
	    String address = scanner.next();
	    if(DBUtil.upDate("update user_info set name=?,mobile=?,address=? where id=?",name,mobile,address,id)){
	        System.out.println("修改成功!");
	    }else {
	        System.err.println("修改失败!");
	    }
	    break;
        }
	case 4: {
	    System.out.println("请输入要查询的学号:");
	    String id = scanner.next();
	    if(!DBUtil.exist("select * from user_info where id=?",id)) {
	        System.err.println("学号不存在!查询失败");
                return;
	    }
	    class RowMapper implements IRowMapper{
	        @Override
		public void rowMapper(ResultSet resultSet) {
		    try {
	                if(resultSet.next()) {
			    String name = resultSet.getString("name");
		            String mobile = resultSet.getString("mobile");
			    String address = resultSet.getString("address");
			    System.out.println("学号:"+id+",姓名:"+name+",电话:"+mobile+",地址:"+address);
			    return;
	                }
		    } catch (Exception e) {
	            e.printStackTrace();
		    }
                }
            }	
            String sql = "select * from user_info where id=?";
            IRowMapper rowMapper = new RowMapper();
	    DBUtil.select(sql,rowMapper,id);
	    break;
        }
            	    
        case 0: {
	    flag = false;
	    return;
        }
	default:
	    System.err.println("请输入正确序号!");
	    break;
        }
    }
}

Lambda优化

考虑到工具类使用的IRowMapper属于函数式接口,在case 4中,创建了一个内部类我们可以改编为匿名内部类并且使用Lambda表达式简化,例如:

case 4: {
    System.out.println("请输入要查询的学号:");
    String id = scanner.next();
    if(!DBUtil.exist("select * from user_info where id=?",id)) {
        System.err.println("学号不存在!查询失败");
	return;
    }
    IRowMapper rowMapper = (ResultSet resultSet)->{
	try {
	    if(resultSet.next()) {//9、获取table中的数据
	        String name = resultSet.getString("name");
	        String mobile = resultSet.getString("mobile");
	        String address = resultSet.getString("address");
	        System.out.println("学号:"+id+",姓名:"+name+",电话:"+mobile+",地址:"+address);			
	    }
	} catch (Exception e) {
	    e.printStackTrace();
	}
    };
    String sql = "select * from user_info where id=?";//1、首先获取操作语句
    DBUtil.select(sql,rowMapper,id);
}

还可以进一步简化:

case 4: {
    System.out.println("请输入要查询的学号:");
    String id = scanner.next();
    if(!DBUtil.exist("select * from user_info where id=?",id)) {
        System.err.println("学号不存在!查询失败");
	return;
    }
    DBUtil.select(sql,(ResultSet resultSet)->{
	try {
	    if(resultSet.next()) {//
	        String name = resultSet.getString("name");
		String mobile = resultSet.getString("mobile");
		String address = resultSet.getString("address");
	        System.out.println("学号:"+id+",姓名:"+name+",电话:"+mobile+",地址:"+address);	
	    }
        } catch (Exception e) {
	    e.printStackTrace();
	}
    },id);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值