请教个问题

06-10-12 hjr

import java.sql.*;

import database.*;

import java.util.*;

/*####################程序开始#####################*/

public class Comm_Div_Page {

private int l_start; //开始纪录

private int l_end; //结束纪录

private int l_curpage; //当前页数

private int l_totalnum; //总记录数

private int m_page_count ; //每页记录条数

private int l_totalpage; //总的页数

private String m_sql; //对应SQL语句

private int totalnum = 0;

///////////////////////////输入值///////////////////////////////

public void setsql(String sql) {

this.m_sql = sql;

}

/**

* 作用 初始化 currentpage 得到记录总数

* l_curpage = currentpage; //当前页

* l_totalnum = totalnum; //总记录条数

* */

public void Init(int currentpage,int page_count) throws Exception {

m_page_count=page_count; //每页记录条数

l_curpage = currentpage;

DBConnect con=new DBConnect();

Connection conn= con.getConnection();

PreparedStatement stm=conn.prepareStatement(m_sql);

ResultSet rst_count = stm.executeQuery();

this.totalnum = rst_count.getFetchSize(); //得到总记录条数

rst_count.close();

rst_count = null;

stm.close();

stm = null;

l_totalnum = totalnum;

if (currentpage >= 0) { //如果 currentpage>=0 当前页

/* Math.round();是采用四舍五入方式取得最接近的整数。

Math.ceil();是向上取得一个最接近的整数,

Math.floor()和Math.ceil()相反,

Math.floor();向下 取得一个最接近的整数

*/

/*

总页数:(long)Math.ceil((double)l_totalnum/(double)int_num)

当前页:currentpage

如果 当前页>=总页数,

*/

if (currentpage >=

(int) Math.ceil((double) l_totalnum / (double) m_page_count))

l_curpage = (int) Math.floor((double) l_totalnum /

(double) m_page_count);

else

l_curpage = currentpage;

}

else {

l_curpage = 0;

}

l_start = l_curpage * m_page_count; //开始(当页首条)记录= 当前页*每页条数

l_end = l_start + m_page_count; //尾记录(当页最后一条记录)=开始(当页首条)记录+每页条数

if (l_end > l_totalnum) //如果 尾记录数>总记录数

l_end = l_totalnum; //则尾记录=总记录

l_totalpage = (int) Math.ceil((double) l_totalnum / (double) m_page_count); //总页数+1

}

public int getCurpage() {

return l_curpage; //返回当前页

}

public int getPrepage() { //前一页 ,初始页为.jsp?currentpage=0

if (l_curpage - 1 >= 0) {

return l_curpage - 1; //返回前一页

}

else {

return 0; //返回 .jsp?currentpage=0

}

}

public int getNextpage() { //下一页

if (l_curpage + 1 <= l_totalpage) { //如果 当前页码<总页数

return l_curpage + 1; //下一页

}

else {

return l_totalpage; // 当前页就是最后一页 l_curpage=l_totalpage

}

}

public int getTotalnum() { //总记录条数

return l_totalnum;

}

public int getTotalpage() { //总页数

return l_totalpage;

}

public int getStart() { //开始记录

return l_start;

}

public int getEnd() { //结束记录

return l_end;

}

/*****

*执行SQL查询

*将查询结果以数组存放在Vector中

*返回Vector

*/

public Vector executeSql(int FieldCount) throws Exception {

DBConnect con=new DBConnect();

Vector vec=new Vector();

Connection conn= con.getConnection();

PreparedStatement stm = conn.prepareStatement(m_sql);

ResultSet rst = stm.executeQuery();

int m_int;

while(rst.next()){

String m_row[]=new String[FieldCount];

for(int i=0;i<FieldCount;i++)

{

m_int=i+1;

m_row=rst.getString(m_int);

}

vec.add(m_row);

}

System.out.print(vec.size());

return vec;

}

}

这段代码有个问题:对象实例化后,调用init初始化,l_end应该是有值的,可是再调用 getEnd方法取l_end时,值就变成了0。我想问下这是什么原因?该怎么解决?

    

banq
2006-10-13 10:23
光看代码,谁都很难一下子给出原因,自己拉到IDE中调试一下不就得了?

lixu
2006-10-13 15:36
是不是参数没有传递过去?

hjr
2006-10-17 11:33
问题解决了,谢谢!

猜你喜欢