一、项目概述
本系统首先需要进行登录或者注册,根据不同身份操作不同的功能。管理员主要负责对操作员的基本信息管理和相关逾期金额的设定和查看。操作员主要负责对读者的信息进行管理和相关图书进行管理。本项目还会利于数据库进行数据的读取和存储。
二、遇到的问题
2.1 图书出版日期
MySQL数据库日期类型格式是“yyyy-MM-dd”格式,但出版日期一般没有准确的日期,所以我将数据库的日期设置为varchar类型,用正则表达式来判断输入的格式是否正确
public static String readDate(boolean bool) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月");
String date = readKeyBoard(bool);
if (date.equals("")) return date;
Date d;
try {
d = sdf.parse(date);
} catch (Exception e) {
return e.getMessage();
}
return sdf.format(d);
}
2.2 java反射异常
使用通用数据库增删改方法的时候,会出现java.lang.NoSuchFieldException异常,即反射异常,原因是结果集的子段名与反射的类的子段不匹配
public List<Book> selectBook() throws Exception {
String sql = "SELECT `ISBN`,`typeName`,`bookName`,`author`,`publish`,`publishDate`,`publishTime`,`unitPrice` " +
"FROM `tb_book` b " +
"INNER JOIN `tb_booktype` bt " +
"ON b.`typeId` = bt.`id`";
List<Book> list = Dao.executeQuery(Book.class, sql);
return list;
}
public class Book {
private long ISBN;
private String typeName;
private String bookName;
private String author;
private String publish;
private String publishDate;
private int publishTime;
private double unitPrice;
private boolean status;
......
}
2.3 图书(读者)删除、修改
要删除或修改图书,首先要判断该图书是否处于已借出状态,若被借出则不能删除或修改,同理,读者有未归还图书也不能删除或修改。
三、总结
本次项目难度并不大,主要就是对于sql语句和JDBC的理解,大部分的问题都出现在数据库连接和sql语句的编写上,对于这些异常,能看懂异常,会解决异常是一件很重要的事。其中也用到了单例设计模式,此设计模式让其他的类不能直接对一个类创建对象,需通过它的getInstance()方法来创建,比较节省内存空间。