JDBC实践:书籍管理系统详析

本文是作者通过JDBC实现书籍管理系统的实践项目,详细介绍了DBUtil工具类的运用和自定义Book、Publisher类。重点在于DBUtil的接口回调多态及值存在性的简洁判断方法,理解这两点能轻松掌握系统核心。
摘要由CSDN通过智能技术生成

一、书籍管理系统代码展示

本文是作者为了熟练使用JDBC技术而做的练手项目,其中应用了DBUtil工具类的知识,我会在代码注释中将整个项目尽量详尽的解释一遍,将会展现其实现代码以及附属的DBUtil工具类和几个自定义类(首先是实现代码):

//JDBC实现的书籍管理系统
public class ClientManage {
   
	public static void main(String[] args) {
   
		print();
		
		while (true) {
   
			menu();
		}
	}	
	//输出的书籍管理系统的进入界面
	private static void print() {
   
		System.out.println("*********************************");
		System.out.println("*\t\t\t\t\t\t*");
		System.out.println("*\t欢迎进入书籍管理系统\t\t*");
		System.out.println("*\t\t\t\t\t\t*");
		System.out.println("*********************************");
	}
	//本类中定义一个判断名字是否重复的方法,用于判断出版社名字是否已存在,并起到了简化实现代码的作用
	static boolean exist(String sql, String name) {
   		
		class RowMapper implements IRowMapper{
   
			boolean state;
			@Override
			//内部类:利用了多态,是实际执行的方法体
			public void rowMapper(ResultSet res) {
   
				try {
   
					if (res.next()) {
   
						state = true;
					}
				} catch (SQLException e) {
   
					e.printStackTrace();
				}
			}	
		}
		//建立内部类对象,为接下来的查询方法的执行做准备
		RowMapper rowMapper = new RowMapper();
		//执行DBUtil工具类中的查询方法,利用了多态,同时执行了之前创建的rowMapper对象中重写的方法体
		DBUtil.select(sql, rowMapper,name);
		//返回查询结果
		return rowMapper.state;	
	}	
	//此方法也是用于判断出版社名字是否已存在,不过返回值不同:如果存在则返回此出版社的ID值
	static String isExist(String sql, String name) {
   	
		class RowMapper implements IRowMapper{
   
			String id = null;
			@Override
			public void rowMapper(ResultSet res) {
   
				try {
   
					if (res.next()) {
   
						id = res.getString("id");
					}
				} catch (SQLException e) {
   
					e.printStackTrace();
				}
			}	
		}
		RowMapper rowMapper = new RowMapper();
		DBUtil.select(sql, rowMapper,name);
		return rowMapper.id;
	}
	static String isExist1(String sql, String id) {
   
		
		class RowMapper implements IRowMapper{
   
			String publisherName = null;
			@Override
			public void rowMapper(ResultSet res) {
   
				try {
   
					if (res.next()) {
   
						publisherName = res.getString("name");
					}
				} catch (SQLException e) {
   
					e.printStackTrace();
				}
			}	
		}
		RowMapper rowMapper = new RowMapper();
		DBUtil.select(sql, rowMapper,id);
		return rowMapper.publisherName;
	}
	private static void menu() {
   
		System.out.println("1、出版社管理");
		System.out.println("2、书籍管理");
		System.out.println("3、退出");
		System.out.println("请输入操作,按Enter键结束...");
		Scanner scanner = new Scanner(System.in);
		int option = scanner.nextInt();	
		switch (option) {
   
		case 1:	
			System.out.println("1、添加出版社信息");
			System.out.println("2、删除出版社信息");
			System.out.println("3、修改出版社信息");
			System.out.println("4、查询出版社信息");
			int option1 = scanner.nextInt();
			switch (option1) {
   
			case 1:{
   
				System.out.println("请输入出版社名字:");
				String name = scanner.next();
				String sql = "select * from publisher where name=?";
				if (exist(sql,name)) {
   
					System.out.println("系统中已经有该出版社");
					return;
				} else {
   
					System.out.println("请输入出版社地址:");
					String address = scanner.next();
					String id = UUID.randomUUID().toString();
				    sql = "insert into publisher(id,name,address) values(?,?,?)";
				    //判断是否添加成功并执行添加操作
				    if (DBUtil.update(sql
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值