日期:2014-05-18  浏览次数:20627 次

帮忙看看红色部分是做什么用
public Vector getOnePage(String sql,int page,int records)
{
return getOnePage(sql,page,records,true);
}

public Vector getOnePage(String sql, int page, int records,boolean b)
{
/**第一个为总页数
* 第二...个为Hashtable
*/
Vector vect = new Vector();
try
{
pstm = conn.prepareStatement(sql);
rs = pstm.executeQuery();
int rows = 0;
while(rs.next())
{
rows++;
}
int sum = rows / records;
if(rows % records != 0 || rows == 0)
{
sum++;
}
vect.add("" + rows);
vect.add("" + sum);
int temp = rows;
  pstm.close();


pstm = conn.prepareStatement(sql);
rs = pstm.executeQuery();
rows = (page - 1) * records;
rows++;
while(rows>0)
{
rs.next();
rows--;
}

DealString ds = new DealString();


int j = 0;

do
{
if(rs==null||j == records||temp==0||page>sum)
{
break;
}
j++;

ResultSetMetaData rsmd = rs.getMetaData();
int cols = rsmd.getColumnCount();
Hashtable hash = new Hashtable();
for(int i = 1; i <= cols; i++)
{
String field = ds.toString(rsmd.getColumnName(i));
String value = ds.toString(rs.getString(i));
hash.put(field, value);
}
vect.add(hash);
}while(rs.next());
}catch(SQLException sqle)
{
System.out.println("执行SQL语句 " + sql + " 分页至第 " + page +
" 页时出错;错误为:" +
sqle);
}
finally
{
closeRs();
closePstm();
}
return vect;
}

------解决方案--------------------

pstm = conn.prepareStatement(sql); 
rs = pstm.executeQuery(); 
rows = (page - 1) * records; 
rows++; 
while(rows> 0) 

rs.next(); 
rows--; 


定位到要显示的初始数据位置那
------解决方案--------------------
应该是个分页显示数据的代码,红色代码的作用是把游标走到page该显示的数据那里,把之前的数据全部next
------解决方案--------------------
pstm = conn.prepareStatement(sql);
rs = pstm.executeQuery();
rows = (page - 1) * records;
rows++;
while(rows> 0)
{
rs.next();
rows--;
}
实现分页时将游标移至需要显示的数据那,不过也可以使用rs.absolute(rows+1)来做
------解决方案--------------------
为何不用
rs.absolute()呢?可以直接定位到结果集的行。
对于无法限定结果集的情况下,还是可行的!
------解决方案--------------------
pstm = conn.prepareStatement(sql); //建立一个statement
rs = pstm.executeQuery(); //执行sql,得到数据集合
rows = (page - 1) * records; //page - 1是当前页,rows取得当前要显示的数据行数
//例如第10页 (records是每页的行数,例如10行)则rows = 90,然后第十页的第一行就是90 + 1,所以下面
//rows++;
rows++; 
//循环用来将rs的游标指到第91行数据处
while(rows> 0) 

rs.next(); 
rows--;