(急) 求struts分页代码 运行通过立马给100分 需求下面详细说了谢谢各位了需要个实现struts MVC模式的分页例子 需要能运行就能跑起来 1。不要和hibernate集成的 2。而且不要查询出的数据是所有的
而是翻一页查询出需要显示的数据量 小弟在此谢谢了 在线等 可以发我邮箱里 最好是项目打成包 方便的话给个XXX.sql也行
最重要的忘说了 3。数据库要 oralce 下的 mysql的就不要了 在线等。
谢谢各位了 运行后 立马给你另外50分
而是翻一页查询出需要显示的数据量 小弟在此谢谢了 在线等 可以发我邮箱里 最好是项目打成包 方便的话给个XXX.sql也行
最重要的忘说了 3。数据库要 oralce 下的 mysql的就不要了 在线等。
谢谢各位了 运行后 立马给你另外50分
解决方案 »
- jsp使用MultipartRequest上传图片怎么判断图片的后缀名是否为"jpg","jpeg"正确的格式呢??
- 求助 servlet大问题
- JBPM4.4ProcessInstance和Excution是什么区别
- 关于struts2标签库的一个问题
- struts 求解决方案
- [求助]在SSH框架中调用Oracle的存储过程出现问题?
- 求Java连连看游戏程序
- 谁有JSP的随即生成四位彩色校验码的代码????以前我在网上见过,但现在想要了却怎么也找不到了
- 怎么向一个文本文件追加一行?
- String realPath = request.getServletContext().getRealPath("/image");报错
- JAVA写的WEBSERVICE客户端访问出错。
- Java中日期的使用方法
oracle 数据库
oracle的?懂得了思想还是自己改。
PROCEDURE DotNetPagination(
Pindex in number, --分页索引
Psql in varchar2, --产生dataset的sql语句
Psize in number, --页面大小
Pcount out number, --返回分页总数
v_cur out type_cur --返回当前页数据记录
);
procedure DotNetPageRecordsCount(
Psqlcount in varchar2, --产生dataset的sql语句
Prcount out number --返回记录总数
);
end DotNot;
=======================================create or replace package body DotNet is --***************************************************************************************
PROCEDURE DotNetPagination(
Pindex in number,
Psql in varchar2,
Psize in number,
Pcount out number,
v_cur out type_cur
)
AS v_sql VARCHAR2(1000);
v_count number;
v_Plow number;
v_Phei number;
Begin
------------------------------------------------------------取分页总数
v_sql := 'select count(*) from (' || Psql || ')';
execute immediate v_sql into v_count;
Pcount := ceil(v_count/Psize);
------------------------------------------------------------显示任意页内容
v_Phei := Pindex * Psize + Psize;
v_Plow := v_Phei - Psize + 1;
--Psql := 'select rownum rn,t.* from cd_ssxl t' ; --要求必须包含rownum字段
v_sql := 'select * from (' || Psql || ') where rn between ' || v_Plow || ' and ' || v_Phei ; open v_cur for v_sql;
End DotNetPagination;
--**************************************************************************************
procedure DotNetPageRecordsCount(
Psqlcount in varchar2,
Prcount out number
)
as
v_sql varchar2(1000);
v_prcount number;
begin
v_sql := 'select count(*) from (' || Psqlcount || ')';
execute immediate v_sql into v_prcount;
Prcount := v_prcount; --返回记录总数
end DotNetPageRecordsCount;
--**************************************************************************************
end DotNot;------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TYPE type_cur IS REF CURSOR; --定义游标变量用于返回记录集
PROCEDURE DotNetPagination(
Pindex in number, --分页索引
Psql in varchar2, --产生dataset的sql语句
Psize in number, --页面大小
Pcount out number, --返回分页总数
v_cur out type_cur --返回当前页数据记录
);
procedure DotNetPageRecordsCount(
Psqlcount in varchar2, --产生dataset的sql语句
Prcount out number --返回记录总数
);
end DotNot;
=======================================
看了下 似乎很强大 但是没用过 谢谢了 能不能重新发个完整点的 把Action 中怎么调用的还是怎么拼的sql也粘上 谢谢了
type cur_query is ref cursor;
end pkg_query;--过程CREATE OR REPLACE PROCEDURE "PRC_QUERY" (p_tableName
in varchar2, --表名
p_strWhere in varchar2, --查询条件
p_orderColumn in varchar2, --排序的列
p_orderStyle in varchar2, --排序方式
p_curPage in out Number, --当前页
p_pageSize in out Number, --每页显示记录条数
p_totalRecords out Number, --总记录数
p_totalPages out Number, --总页数
v_cur out pkg_query.cur_query) --返回的结果集
IS
v_sql VARCHAR2(1000) := ''; --sql语句
v_startRecord Number(4); --开始显示的记录条数
v_endRecord Number(4); --结束显示的记录条数
BEGIN
--记录中总记录条数
v_sql := 'SELECT TO_NUMBER(COUNT(*)) FROM ' || p_tableName || ' WHERE 1=1';
IF p_strWhere IS NOT NULL or p_strWhere <> '' THEN
v_sql := v_sql || p_strWhere;
END IF;
EXECUTE IMMEDIATE v_sql INTO p_totalRecords; --验证页面记录大小
IF p_pageSize < 0 THEN
p_pageSize := 0;
END IF; --根据页大小计算总页数
IF MOD(p_totalRecords,p_pageSize) = 0 THEN
p_totalPages := p_totalRecords / p_pageSize;
ELSE
p_totalPages := p_totalRecords / p_pageSize + 1;
END IF; --验证页号
IF p_curPage < 1 THEN
p_curPage := 1;
END IF;
IF p_curPage > p_totalPages THEN
p_curPage := p_totalPages;
END IF; --实现分页查询
v_startRecord := (p_curPage - 1) * p_pageSize + 1;
v_endRecord := p_curPage * p_pageSize;
v_sql := 'SELECT * FROM (SELECT A.*, rownum r FROM ' ||
'(SELECT * FROM ' || p_tableName;
IF p_strWhere IS NOT NULL or p_strWhere <> '' THEN
v_sql := v_sql || ' WHERE 1=1' || p_strWhere;
END IF;
IF p_orderColumn IS NOT NULL or p_orderColumn <> '' THEN
v_sql := v_sql || ' ORDER BY ' || p_orderColumn || ' ' || p_orderStyle;
END IF;
v_sql := v_sql || ') A WHERE rownum <= ' || v_endRecord || ') B WHERE r >= '
|| v_startRecord;
DBMS_OUTPUT.put_line(v_sql);
OPEN v_cur FOR v_sql;
END prc_query;
//java的一个分页类
package XXT.DB;
import java.sql.*;
import java.util.*;
import oracle.jdbc.driver.OracleTypes;public class BestOraclePageBean {
//获得数据需要的参数
private Connection conn;//数据库连接对象 private String s_tableName="";//从那个表中取数据
private String s_whereCondition="";//条件
private String s_orderColumn="";//排序字段,不能为空!
private String s_orderStyle ="ASC";//按升序还是降序排列数据,ASC 升序,DESC降序 private int i_totalRecords;//满足条件的数据库中的记录数
private int i_curPage=1;//当前页
private int i_totalPages;//如果按照每页显示的数据行数,则共可以显示的页面数
private int i_multiple=10; //一次从数据库中取出的数据,是每页显示的数据的倍数
private int i_pageSize=20;//每页显示的数据行数
private Vector pageData;//存放一次要显示的数据 public BestOraclePageBean() {
pageData=new Vector();
}
public BestOraclePageBean(Vector v) {
pageData=v;
}
public void setData(Vector v) {
pageData=v;
}
public void setConnecton(Connection con) {
this.conn=con;
}
public void setTableName(String tablename) {
this.s_tableName =tablename;
//取出字段个数
/*
try {
Statement stmt= conn.createStatement();
ResultSet rs=stmt.executeQuery("Select count( *) From Syscolumns C, Sysobjects N where N.id=C.id and N.name='"+this.s_TableName+"'");
rs.next();
i_FieldsCount=rs.getInt(1);
rs.close();
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("获得表的字段个数错误"+e.toString());
}
*/ }
public void setWhereCondition(String strWhere) {
this.s_whereCondition =strWhere;
}
public void setOrderFieldName(String orderField) {
this.s_orderColumn =orderField;
}
public void setOrderStyle(String orderStyle) {
this.s_orderStyle =orderStyle;
} public void setPageSize(int pageSize) {
this.i_pageSize = pageSize;
}
public void setMultiple(int multiple) {
this.i_multiple = multiple;
}
public int getTotalRecords() {
return this.i_totalRecords;
} public int getCurPage() {
return this.i_curPage;
} public int getPageSize() {
return this.i_pageSize;
}
public int getTotalPages() {
return this.i_totalPages;
}
public int getMultiple() {
return this.i_multiple;
}
//得到每页的数据
public ResultSet getPageData(int page) {
this.i_curPage=page;
pageData.clear();
CallableStatement call = null;
ResultSet rs=null;
try {
String sql= "{ call prc_query(?,?,?,?,?,?,?,?,?) }";
call = conn.prepareCall(sql);
call.setString(1,this.s_tableName);
call.setString(2,this.s_whereCondition);
call.setString(3,this.s_orderColumn);
call.setString(4,this.s_orderStyle);
call.setInt(5,this.i_curPage);
call.setInt(6,this.i_pageSize);
call.registerOutParameter(5,OracleTypes.INTEGER);
call.registerOutParameter(6,OracleTypes.INTEGER);
call.registerOutParameter(7,OracleTypes.INTEGER);
call.registerOutParameter(8,OracleTypes.INTEGER);
call.registerOutParameter(9, OracleTypes.CURSOR);
call.execute();
this.i_curPage=(int)call.getInt(5);
this.i_pageSize=(int)call.getInt(6);
this.i_totalRecords=(int)call.getInt(7);
this.i_totalPages=(int)call.getInt(8);
rs=(ResultSet) call.getObject(9);
return rs;
} catch (SQLException ex) {
System.out.println("调用存储过程获得数据错误:"+ex.toString());
return null;
}
} }