5.6 管理员管理图书
管理员有一个图书管理功能,展示图书列表外,最后一列是修改,可以修改该图书的所有属性(id除外)。

流程应该是点击修改链接后进入一个新的jsp页面,根据图书id把该图书的属性读出列到表单,下方的按钮是更新。

最后点击更新,执行update函数,完成更新。下面是用到的SQL函数:
package db;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;import db.entity.Book;public class BookData{ /** 根据账号取得用户的所有数据,并保存到一个User对象 * @param username * @return */ public static Book findBookById(String id){ // 最终返回的user对象 Book book=new Book(); book.setId(Integer.parseInt(id)); // 要执行的sql语句,通过字符串拼接出来 String SQLTEXT="select * from book where id = '"+id+"'"; try{ // 使用上面的DBConifg类的getCon方法,建立一个连接 Connection con=DBConfig.getCon(); // 准备执行sql的实体 Statement stmt=con.createStatement(); // 执行sql,并把查询结果赋给 ResultSet rst=stmt.executeQuery(SQLTEXT); while(rst.next()){ // 查询结果,并把结果逐个设置到user对象 book.setAuthor(rst.getString("author")); book.setName(rst.getString("name")); book.setPublisher(rst.getString("publisher")); book.setValid(rst.getString("valid")); } // 后使用先关闭原则,关闭各个对象,特别是con如果不关闭,会造成连接泄露 rst.close(); stmt.close(); con.close(); } catch(SQLException e){ e.printStackTrace(); } return book; } /** 通过关键字查找书籍 */ public static List search(String keyword){ // 最终返回的user对象 List result=new ArrayList(); // 要执行的sql语句,通过字符串拼接出来 String SQLTEXT="select * from book where name like '%"+keyword+"%' or author like '%"+keyword+"%' or publisher like '%"+keyword+"%'"; try{ // 使用上面的DBConifg类的getCon方法,建立一个连接 Connection con=DBConfig.getCon(); // 准备执行sql的实体 Statement stmt=con.createStatement(); // 执行sql,并把查询结果赋给 ResultSet rst=stmt.executeQuery(SQLTEXT); while(rst.next()){ // 查询结果,并把结果逐个设置到user对象 User Book book=new Book(); book.setAuthor(rst.getString("author")); book.setName(rst.getString("name")); book.setPublisher(rst.getString("publisher")); book.setAuthor(rst.getString("author")); book.setId(rst.getInt("id")); book.setValid(rst.getString("valid")); result.add(book); } // 后使用先关闭原则,关闭各个对象,特别是con如果不关闭,会造成连接泄露 rst.close(); stmt.close(); con.close(); } catch(SQLException e){ e.printStackTrace(); } return result; } /** 查找所有书籍 */ public static List findAll(){ // 最终返回的user对象 List result=new ArrayList(); // 要执行的sql语句,通过字符串拼接出来 String SQLTEXT="select * from book"; try{ // 使用上面的DBConifg类的getCon方法,建立一个连接 Connection con=DBConfig.getCon(); // 准备执行sql的实体 Statement stmt=con.createStatement(); // 执行sql,并把查询结果赋给 ResultSet rst=stmt.executeQuery(SQLTEXT); while(rst.next()){ // 查询结果,并把结果逐个设置到Book对象 Book book=new Book(); book.setAuthor(rst.getString("author")); book.setName(rst.getString("name")); book.setPublisher(rst.getString("publisher")); book.setAuthor(rst.getString("author")); book.setId(rst.getInt("id")); book.setValid(rst.getString("valid")); result.add(book); } // 后使用先关闭原则,关闭各个对象,特别是con如果不关闭,会造成连接泄露 rst.close(); stmt.close(); con.close(); } catch(SQLException e){ e.printStackTrace(); } return result; } /** * 更新书籍所有属性 */ public static void update(Book book){ // 要执行的sql语句,通过字符串拼接出来 String SQLTEXT=String.format("update book set name='%s',author='%s',"+"publisher='%s', valid='%s' where id='%s'",book.getName(),book.getAuthor(),book.getPublisher(),book.getValid(),book.getId()); System.out.println(SQLTEXT); try{ // 使用上面的DBConifg类的getCon方法,建立一个连接 Connection con=DBConfig.getCon(); // 准备执行sql的实体 Statement stmt=con.createStatement(); // 执行sql,并把查询结果赋给rst stmt.executeUpdate(SQLTEXT); stmt.close(); con.close(); } catch(SQLException e){ e.printStackTrace(); } }}