package ch10;
import ch10.*;
import java.util.*;
import java.sql.*;
public class IndentDB
{
private Connection conn;
private Vector indentList;
private int page = 1; //显示的页码
private int pageSize=10; //每页显示的图书数
private int pageCount =0; //页面总数
private long recordCount =0; //查询的记录总数
//构造方法,获得数据库的连接。
public IndentDB()
{
this.conn = DataBaseConnection.getConnection();
indentList = new Vector();
}
/**
* 搜索所有的订单信息,返回由Indent值对象组成的Collection
*/
public void setIndentList() throws Exception
{
Statement stmt =conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from indent");
while(rs.next())
{
Indent tempIndent=new Indent();
tempIndent.setIndentNo(rs.getString("indentno"));
tempIndent.setUserName(rs.getString("username"));
tempIndent.setSubmitDate(rs.getDate("submitDate"));
tempIndent.setTotalPrice(rs.getFloat("totalprice"));
tempIndent.setAccepter(rs.getString("accepter"));
tempIndent.setAddress(rs.getString("address"));
tempIndent.setZipCode(rs.getString("zipcode"));
tempIndent.setStatus(rs.getInt("status"));
indentList.add(tempIndent);
}
conn.close();
//return indentList;
}
/**
* 搜索指定订单编号的订单信息,返回该订单信息
*/
public Indent getOneIndent(String indentNo) throws Exception
{
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from indent where indentNo='"+indentNo+"'");
Indent indent=new Indent();
while(rs.next())
{
//indent.setId(rs.getLong("id"));
indent.setIndentNo(rs.getString("indentno"));
indent.setUserName(rs.getString("username"));
indent.setSubmitDate(rs.getDate("submitDate"));
indent.setTotalPrice(rs.getFloat("totalprice"));
indent.setAccepter(rs.getString("accepter"));
indent.setAddress(rs.getString("address"));
indent.setZipCode(rs.getString("zipcode"));
indent.setStatus(rs.getInt("status"));
}
conn.close();
return indent;
}
/**
* 添加一个订单信息到数据库中
*/
public void addIndent(Indent indent)throws Exception
{
PreparedStatement pstmt =conn.prepareStatement("insert into indent (indentno,username,submitdate,totalprice,accepter,address,zipcode,status) values(?,?,?,?,?,?,?,?)");
pstmt.setString(1,indent.getIndentNo());
pstmt.setString(2,indent.getUserName());
pstmt.setDate(3,indent.getSubmitDate());
pstmt.setFloat(4,indent.getTotalPrice());
pstmt.setString(5,indent.getAccepter());
pstmt.setString(6,indent.getAddress());
pstmt.setString(7,indent.getZipCode());
pstmt.setInt(8,indent.getStatus());
//pstmt.setDate(9,new java.sql.Date(new java.util.Date().getTime()));
//boolean flag=true;
pstmt.executeUpdate();
conn.close();
//return flag;
}
/**
* 修改数据库中指定订单的状态
*/
public void modifyIndent(String indentNo)throws Exception
{
Statement stmt=conn.createStatement();
//String indentNo=indent.getIndentNo();
//ItemIndentDB itemlist=new ItemIndentDB();
//itemlist.setItemList(indentNo);
int rs=stmt.executeUpdate("update indent set status=1 where indentNo='"+indentNo+"'");
conn.close();
}
/**
* 删除数据库中指定订单的信息
*/
public void deleteIndent(long indentId)throws Exception
{
Statement stmt=conn.createStatement();
stmt.executeUpdate("delete from indent where id='"+indentId+"'");
conn.close();
}
/**
* 分页显示订单信息
*/
public boolean execute(String requestPage) throws Exception
{
String sqlStr=null;
try
{
page = Integer.parseInt(requestPage);
}
catch (NumberFormatException e)
{
page = 1;
}
//return page;
//取出记录数
sqlStr = "select count(*) from indent";
try
{
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(sqlStr);
if (rs.next())
recordCount = rs.getInt(1);
rs.close();
}
catch (SQLException e)
{
// return false;
}
// return recordCount;
//设定总页面数量
if (recordCount < 1)
pageCount = 0;
else
pageCount = (int)(recordCount - 1) / pageSize + 1;
//检查查看的页面数是否在范围内
if (page < 1)
page = 1;
else if (page > pageCount)
page = pageCount;
//return pageCount;
//sql为倒序取值
//sqlStr = "select a.id,a.bookname,a.author,a.publish,a.bookno,a.content,a.prince,a.amount,a.Leav_number,a.regtime from My_book a ";
sqlStr="select * from indent where status=0 ";
if (page == 1)
{
sqlStr = sqlStr + " order by submitDate asc limit 0,"+pageSize;
}
else
{
sqlStr = sqlStr + " order by submitDate asc limit "+(pageSize*(page-1))+","+pageSize;
}
//return sqlStr;
//String indentNo="";
try
{
Statement stmt=conn.createStatement();
ResultSet rs = stmt.executeQuery(sqlStr);
while (rs.next())
{
Indent indent = new Indent();
//if(rs.next())
//indentNo=rs.getString("accepter");
indent.setIndentNo(rs.getString("indentNo"));
indent.setUserName(rs.getString("username"));
indent.setSubmitDate(rs.getDate("submitDate"));
indent.setTotalPrice(rs.getFloat("totalPrice"));
indent.setAccepter(rs.getString("accepter"));
indent.setAddress(rs.getString("address"));
indent.setZipCode(rs.getString("zipCode"));
indent.setStatus(rs.getInt("status"));
/*Object[] indent =new Object[8];
indent[0] =rs.getString("indentNo");
indent[1] =rs.getString("username");
indent[2] =rs.getDate("submitDate");
indent[3] =rs.getFloat("totalPrice");
indent[4] =rs.getString("accepter");
indent[5] =rs.getString("address");
indent[6] =rs.getString("zipcode");
indent[7] =rs.getInt("status");
*/
indentList.add(indent);
}
rs.close();
return true;
}
catch (SQLException e)
{
//System.out.println(e);
return false;
}
// return indent;
}
public Vector getIndentList() throws Exception
{
return indentList;
}
public int getPage()
{ //显示的页码
return page;
}
public void setPage(int newpage)
{
page = newpage;
}
public int getPageSize()
{ //每页显示的图书数
return pageSize;
}
public void setPageSize(int newpsize)
{
pageSize = newpsize;
}
public int getPageCount()
{ //页面总数
return pageCount;
}
public void setPageCount(int newpcount)
{
pageCount = newpcount;
}
public long getRecordCount()
{
return recordCount;
}
public void setRecordCount(long newrcount)
{
recordCount= newrcount;
}
public void getIndentBYUser(String userName)throws Exception
{
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from indent where username='"+userName+"'");
//Indent indent=new Indent();
while(rs.next())
{
Indent tempIndent=new Indent();
tempIndent.setIndentNo(rs.getString("indentno"));
tempIndent.setUserName(rs.getString("username"));
tempIndent.setSubmitDate(r