package palfinger.bean;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 1)这是一个可以把执行结果返回成表格的形式的类,在JSP页面只需要一个打印语句就可以把结果查询结果
* 打印出来,2)并且根据不同的表,生成不同的查询条件,3)可以根据的对显示进行排序,每一列都可以
* 通用性比较强,不过,性能不是我首要考虑的@——@
* 这里一个简单的示例,不过,要放在JSP页面里面使用:
* GetSearchResultByTableFormat get=new GetSearchResultByTableFormat();
* get.setTableTitle("省 核 所 有 的 信 息");
* get.setEditUrl("purchaseInformation_edit.do");
* get.setVerify(true);//把需要通过验证标志设为true,false就不会出现验证项
* get.setVerifyURL("PassVerify_PurchaseInformation.do");
* //注:如需要动态排序功能,这里就不能够出现order排序了
* String sql="select ID,serialNumber,cname,ename,specification from components";
* //取得当前的页号
* int currentPage;
* try{
* currentPage=Integer.parseInt(request.getParameter("page"));
* }catch(NumberFormatException e)
* {
* currentPage=1;
* try{
* currentPage=(Integer)(request.getAttribute("page"));
* //out.println("当前页:"+currentPage);
* }catch(Exception e1)
* {
* currentPage=1;
* }
* }
* //取得当前的页号OK
* get.setDelUrl("purchaseInformation_del.do?page="+currentPage+"&");
* int pageSize=20;
* get.setViewUrl("purchaseInformation_View.do");
* //request.getRequestURI()取得的是当前访问的url地址,但是没有参数
* String pageUrl=request.getRequestURI();
* ****************************设置查找,不需要可以删除掉*************************
* get.setSearch(true);
* String searchType=null;
* searchType=request.getParameter("searchType");
* if(searchType!=null && !searchType.equals("null"))
* {
* get.setSearchType(searchType);
* String searchCondition=request.getParameter("searchCondition");
* get.setSearchCondition(searchCondition);
* pageUrl+="?searchCondition="+searchCondition+"&searchType="+searchType;
* sql+=" where "+searchType+" like '%"+searchCondition+"%'";
* }
* ***************************设置查找OK,不需要可以删除掉************************
* *****************增加排序,如果不需要手动排序,可以去掉下面代码****************
* get.setSort(true);//true表示要排序功能,false表示不需要排序功能,如果这里为true,那
* //上面的SQL语句中一定不能够有order关键字的出现
* String sortType=null;
* String sortColumn=null;
* sortColumn=request.getParameter("columnName");//取得要排序的列
* if(sortColumn!=null)
* {
* sortType=request.getParameter("sortType");//取得排序情况
* sql+=" order by "+sortColumn+" "+sortType;
* }
* if(sortColumn!=null)
* {
* get.setSortColumn(sortColumn);
* if(sortType.equals("desc"))
* {
* get.setSortType(1);
* }
* if(sortType.equals("asc"))
* {
* get.setSortType(2);
* }
* if(pageUrl.indexOf("?")>0)
* pageUrl+="&columnName="+sortColumn+"&sortType="+sortType;
* else
* pageUrl+="?columnName="+sortColumn+"&sortType="+sortType;
* }
* *****************增加排序,如果不需要手动排序,可以去掉上面代码****************
* get.setCurrentPageUrl(pageUrl);
* StringBuffer s=get.getResult_withTableFormat(sql,currentPage,pageSize,true);
* out.println(s);//把取得的查询结果打印出来就OK了
* 上面的操作看起来有点烦,要设置的东西,也比较多,不过,这是从通用性上考虑的,并且多考虑了
* 一些功能,如把编辑、删除、审核等的链接都加上了,如果你只是一个简单的显示的,你可以稍稍更
* 改一些,就成为你需要的了。更改也很简单,把这个方法getExecuteResult_withTableFormat
* 改这一下就可以了。
* 作者:http://blog.csdn.net/fenglibing,2007年9月3日晚10点于深圳
*/
public class GetSearchResultByTableFormat {
public GetSearchResultByTableFormat() {
conn_init();
}
Connection conn;
Statement st;
int currentPage; //当前页号
int pageSize; //每页显示记录条数
int totalPage; //总共页数
int previousPage; //前一页页号
int nextPage; //下一页页号
int columnCount; //总共列数
int totalRecord; //总记录数
String tableTitle; //大标题,这个的下面才是显示的内容
String editUrl; //编辑页面的URL
String delUrl; //删除页面的URL
String viewUrl; //查看指定记录URL
String currentPageUrl;//当前页面的url地址
boolean verify = false; //是否当前记录验证
String verifyURL; //记录的验证地址
boolean sort;//是否需要动态排序
int sortType;//排序类型,一为升序,2为降序
String desc="▼";
String asc="▲";
String sortColumn;//排序的字段
boolean search;//是否显示查询功能
String searchType;
String searchCondition;
/******************************初使化数据库链接******************************/
private void conn_init() {
setConnection();
setStatement();
}
private void setConnection() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String strurl;
strurl =
"jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\Palfinger\\palfinger.mdb";
conn = DriverManager.getConnection(strurl);
} catch (Exception e) {
e.printStackTrace();
}
}
private void setStatement() {
try {
st =
conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
} catch (SQLException e) {
e.printStackTrace();
}
}
/*****************************初使化数据库链接OK*****************************/
/**
*
* @param sql 执行的SQL语句
* @param CurrentPage 当前页
* @param PageSize 每页显示的记录数
* @return 执行的结果到StringBuffer中
*/
public StringBuffer getResult_withTableFormat(String sql, int CurrentPage,
int PageSize,
boolean withEdit) {
int rowNum = 0; //总行数
int TotalPage = 0; //总页数
int beginRow = 0; //起始记录
int endRow = 0; //结束记录
StringBuffer resultRows = new StringBuffer(""); //结果集
this.pageSize = PageSize; //每页大小
try {
rowNum = getTotalResultSetNum(sql); //取得总记录数
this.totalRecord = rowNum; //总记录数
//确定当前页
if (rowNum % PageSize == 0) {
TotalPage = rowNum / PageSize;
} else
TotalPage = rowNum / PageSize + 1;
if (CurrentPage >= TotalPage) {
CurrentPage = TotalPage;
nextPage = CurrentPage;
nextPage = CurrentPage + 1; //得到下一页页号
} else {
nextPage = CurrentPage + 1; //得到下一页页号
}
if (CurrentPage <= 1) {
CurrentPage = 1;
previousPage = CurrentPage; //得到前一页页号
} else {
previousPage = CurrentPage - 1; //得到前一页页号
}
this.currentPage = CurrentPage; //设置当前页
this.totalPage = TotalPage; //设置总页数
beginRow = (CurrentPage - 1) * PageSize + 1; //开始记录
endRow = beginRow + PageSize; //结束记录
resultRows =
getExecuteResult_withTableFormat(sql, beginRow, endRow,
withEdit);
} catch (Exception e) {
e.printStackTrace();
}
return resultRows;
}
/**
*
* @param sql 要执行的SQL语句
* @param startPos 记录的开始点,即从得到结果的第几条记录开始返回
* @param endPos 返回记录的结束点,即最后一条记录
* @par
- 1
- 2
- 3
- 4
- 5
- 6
前往页