而在实现添加功能的时候,由于添加信息最好能够与当前的信息分开,这样可以避免有意外的误操作,防止源数据出现意外,因此,在点击添加后,会跳转一个新的Jsp页面,在该页面中,以表格的形式来插入数据,当然,由于序号是主键的原因,序号这一个属性不能为空,且在输入的时候,会先对数据库进行一个判断,如果有相同的序号,则提示已存在改编号的数据,需要重新输入。关键代码如下:
public static void inputTeachMatBook(String aNum, String dept,
String major, String grade, String date, String stuUseNum,
String stuPay, String teacher, String teaUseNum, String teaPay,
String textIsbn, String textName, String author, String edition,
String publisher, String price, String other, String year) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Connection conn = null;
Statement stmt = null;
PreparedStatement pstmt = null;
PreparedStatement pstmt2 = null;
if(dept == ""){
dept = null;
}
...
conn = DataBase.getConn();
stmt = DataBase.getStatement(conn);
String sql = "insert into teachmatbook values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
pstmt = DataBase.getPStmt(conn, sql);
pstmt.setString(1, aNum);
pstmt.setString(2, dept);
pstmt.setString(3, major);
pstmt.setString(4, grade);
...
代码分析:上述代码是定义了一个静态方法,名为inputTeachMatBook,与插入数据功能相关联。可以看到,本方法需要输入相当多的参数,但是,由于实际操作的需要,可以只填写序号,只要该序号通过审核,能够正常插入数据库,那么其余的数据,那怕是没有数据写入也是可以的,因为在代码中,已经设有将没有输入值的栏位定义为一个null值。最后,通过使用PreparedStatement语句,将相关的信息插入到数据之中。
在实现修改功能的时候,因为修改一条数据,如果要将全部的信息数据都传递过来,那么在实际操作的过程中,会由于缓存或者读取的数据量比较多,影响到系统的流畅性。为此,在实现本功能的时候,只传输了一个教材的序号,而将其他与之相关的信息,在跳转到一个新页面之后,从新去数据库中根据序号查询来获得。关键代码如下:
...
String sql = "update teachmatbook set Dept=?,Major=?,Grade=?,Date=?,StuUseNum=?," +
"StuPay=?,Teacher=?,TeaUseNum=?,TeaPay=?,Textisbn=?,TextName=?,Author=?,Edition=?,Publisher=?,Price=?,Other=?,Year=? where ANum=?";
...
代码分析:上述代码是更新操作的最核心的代码,主要是通过update语句,将对应数据内需要更新的信息进行重新的定义和设置,而由于是直接将序号传递过来的,为了避免可能出现误操作,因而没有提供序号的更改这个功能。而在取值的时候,类似插入数据一样的性质,不过是将没有输入的值设定为该栏位之前的值,而不是设置为空值,而这一步的操作是放在了Servlet中进行。这样一来为了方便管理人员更新个别的单个属性,而不影响全局。 JSP+mysql教材预定和发行管理系统开发与设计(17):http://www.youerw.com/jisuanji/lunwen_1196.html