📄 op_book.java
字号:
package run;
import java.sql.*;
import java.util.Vector;
import util.*;
import book.*;
import javax.servlet.http.HttpServletRequest;
public class op_book extends Database //此类只要负责图书的管理,包括图书的修改,查询,删除和添加等
{
private books abooks = new books(); //新的图书类
private javax.servlet.http.HttpServletRequest request; //建立页面请求对象
private boolean sqlflag = true ; //对接收到的数据是否正确
private Vector booklist; //显示图书列表向量数组
private int page = 1; //标记显示的页码
private int pageSize=10; //标记每页显示的图书数
private int pageCount =0; //标记页面总数
private long recordCount =0; //标记查询的记录总数
public String sqlStr=""; //记录SQL语句
public Vector getBooklist() //得到图书向量组
{
return booklist;
}
public boolean getSqlflag() //得到“对接受到的数据是否"正确的判断
{
return sqlflag;
}
public String to_String( String str) //将字符串进行一次转换
{
try
{
return new String(str.getBytes("gb2312"));
}
catch (Exception e)
{
return str;
}
}
/**
* 将页面表单传来的资料分解
*/
public boolean getRequest(HttpServletRequest newrequest) //负责把从页面接受到的表单资料分解,并设置图书实体的相应属性。
{
boolean flag = false;
try
{
request = newrequest;
String ID = request.getParameter("id");
long bookid = 0;
try
{
bookid = Long.parseLong(ID);
}
catch (Exception e)
{
}
abooks.setId(bookid); //设置图书的ID
String bookname = request.getParameter("bookname");
if (bookname==null || bookname.equals("")) //若图书的名称为空,则标志接受到的数据是错误的
{
bookname = "";
sqlflag = false; //接受的数据是错误的标记
}
abooks.setBookName(to_String(bookname)); //设置图书的名称
String author = request.getParameter("author");
if (author==null || author.equals(""))
{
author = "";
sqlflag = false;
}
abooks.setAuthor(to_String(author)); //设置图书的作者
String publish = request.getParameter("publish");;
if (publish==null)
{
publish = "";
}
abooks.setPublish(to_String(publish)); //设置图书的出版社
String bookclass = request.getParameter("bookclass");
int bc = Integer.parseInt(bookclass);
abooks.setBookClass(bc); //设置图书的分类
String bookno = request.getParameter("bookno");
if (bookno == null)
{
bookno = "";
}
abooks.setBookNo(to_String(bookno)); //设置图书的编号
String picture = request.getParameter("picture");
if (picture == null)
{
picture = "images/01.gif";
}
abooks.setPicture(to_String(picture)); //设置图书的图片
float price;
try
{
price =new Float(request.getParameter("price")).floatValue();
}
catch (Exception e)
{
price = 0;
sqlflag = false;
}
abooks.setPrince(price); //设置图书的价格
int amount;
try
{
amount = new Integer(request.getParameter("amount")).intValue();
}
catch (Exception e)
{
sqlflag = false;
amount = 0;
}
abooks.setAmount(amount); //设置图书的数量
int leav_number;
try
{
leav_number = new Integer(request.getParameter("leav_number")).intValue();
}
catch (Exception e)
{
sqlflag = false;
leav_number = 0;
}
abooks.setLeav_number(leav_number); //设置图书的剩余数量
String content = request.getParameter("content");
if (content == null)
{
content = "";
}
abooks.setContent(to_String(content)); //设置图书的简介
if (sqlflag)
{
flag = true; //图书名、作者、价格和数量不能为空,否则接受到的数据就为空,返回的就是一个错误的数据
}
return flag;
}
catch (Exception e)
{
return flag;
}
}
/**
* 获得查询图书类别的sql语句
* @return
*/
public String getSql()
{
sqlStr = "select id,classname from book order by id"; //根据图书表里图书的ID和名称,并且按照ID的升序来查询图书。
return sqlStr;
}
/**
* 完成图书查询,包括分类,分页查询
* @param res
* @return
* @throws java.lang.Exception
*/
public boolean book_search(HttpServletRequest res) throws Exception //负责图书的查询,包括图书的分类、分页、关键字查询。
{
Database db = new Database();
db.connect();
sm = db.conn.createStatement ();
request = res;
String PAGE = request.getParameter("page"); //页码
String classid = request.getParameter("classid"); //分类ID号
String keyword = request.getParameter("keyword"); //查询关键词
if (classid==null) classid="";
if (keyword==null) keyword = "";
keyword = to_String(keyword).toUpperCase(); //所有字符串转换成大写
try
{
page = Integer.parseInt(PAGE); //将页码转换成整数
}
catch (NumberFormatException e)
{
page = 1; //若出错则将页码赋值为1
}
//取出记录数
if (!classid.equals("") && keyword.equals("") ) //按类别来查询
{
sqlStr = "select count(*) from book where bookclass='"+classid + "'"; //根据数的类别号来查询
}
else if (!keyword.equals(""))
{
if (classid.equals("")) //按关键字来查询
{
sqlStr = "select count(*) from book where upper(bookname) like '%" +
keyword+ "%' or upper(content) like '%" + keyword + "%'"; //根据内容或者书名来查询
}
else //按类别和关键字来查询
{
sqlStr = "select count(*) from book where bookclass='" + classid
+ "' and (upper(bookname) like '%" +keyword+ "%' or "+
"upper(content) like '%" + keyword + "%')"; //根据书的类别号、书名和书的简介来查询
}
}
else //查询所有的书籍
{
sqlStr = "select count(*) from book"; //直接查询所有的书
}
int rscount = pageSize; //每页显示的图书数 pageSize=10
try
{
ResultSet rs1 = sm.executeQuery(sqlStr);
if (rs1.next()) recordCount = rs1.getInt(1); //根据查询的条件查找出查询的记录总数
rs1.close();
}
catch (SQLException e)
{
System.out.println(e.getMessage());
return false;
}
//设定有多少pageCount,意思就是有多少页
if (recordCount < 1)
pageCount = 0; //没有找到的话就是0页
else
pageCount = (int)((recordCount - 1) / pageSize) + 1;
//检查查看的页面数是否在范围内
if (page < 1)
page = 1;
else if (page > pageCount)
{
page = pageCount; //若输入的页数大于总页数,
rscount = (int) recordCount % pageSize; // 最后一页记录数,因为最后一页有可能显示的不是一整页
}
//sql为倒序取值
sqlStr = "select a.id,a.bookname,a.bookclass,b.classname,"+
"a.author,a.publish,a.bookno,a.content,a.prince,a.amount,"+
"a.Leav_number,a.regtime,a.picture from book a,bookclass b"+
" where a.Bookclass = b.Id "; //根据图书表和图书类别表来查询图书
if (!classid.equals("") && keyword.equals("") ) //如果按类别来查询
{
if (page == 1)
{
sqlStr = sqlStr + " and a.bookclass='" + classid + "' "+
"order by a.Id desc"; //如果查询的第一页,直接按降序排列查询即可
}
else
{
if((recordCount-pageSize * (page-1))>=pageSize) //若不是最后一页,每页显示10条记录
{
sqlStr = sqlStr + "limit "+pageSize*(page-1)+","+pageSize;
}
else
{
sqlStr = sqlStr + "limit "+pageSize*(page-1)+","+
(recordCount-pageSize * (page-1));
}
}
}
else if (!keyword.equals(""))
{ //如果是查询资料
if (page == 1)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -