java的分页

Paging.java页面

package eeeee;
import java.sql.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Vector;
public class Paging
{
private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;
private ResultSetMetaData rsmd = null;
private String sqlStr; //Sql的查询语句
private int rowCount=0; //记录总的页数
private int pageCount=0; //所分的逻辑页数
private int pageSize=0; //每页显示的记录数目
private Vector vData;
public void setCon(Connection con)
{
this.con = con;
if(this.con==null)
{
System.out.println("数据库连接失败");
}
else
System.out.print("数据库连接成功");
}

//初始化,获取数据表中的信息
public void initialize(String sqlStr,int pageSize,int ipage) //ipage是要显示的页码,pagesize是要显示的总页数
{
int irows = pageSize*(ipage-1); //一共有多少条信息
this.sqlStr = sqlStr;
this.pageSize=pageSize; //每页显示的目录数
try
{
stmt = this.con.createStatement();
rs = stmt.executeQuery(this.sqlStr); //查询的结果赋值到rs
if(rs!=null)
{
rs.last(); //到结果集的最后一项
this.rowCount=rs.getRow(); //getRow()是当前的行数,,,将当前的行数给rowcount
rs.first();
this.pageCount=(this.rowCount-1)/this.pageSize+1; //获得的页数
}
this.sqlStr=sqlStr+"limit"+irows+","+pageSize; *************************************不懂这句,请详解
stmt = this.con.createStatement(); //创造连接
rs = stmt.executeQuery(this.sqlStr); //开始查询sql
rsmd=rs.getMetaData();
}
catch(SQLException e)
{
System.out.print(e.toString());
}
}
public Vector getPage()
{
Vector vDate = new Vector();

try
{
if(rs!=null){
while(rs.next()){
String[] sData = new String[6];*******************************************************这句不懂
for(int j=0;j<rsmd.getColumnCount();j++){*******************getColumnCount()什么意思有啥用????
sData[j]=rs.getString(j+1);
}
vData.addElement(sData);
}
}
rs.close();
stmt.close();
}catch(SQLException e){
System.out.print(e.toString());
}
return vData;
}
//获得页面总数
public int getPageCount(){
return this.pageCount;
}
public int getRowCount(){
return this.rowCount;
}
}

this.sqlStr=sqlStr+"limit"+irows+","+pageSize;

这句是:sqlStr 是用来存放你的SQL语句的变量;整个的意思就是:
比如:sqlStr="select * from user";
this.sqlStr="select * from user limit 9,4
就是查询表user 数据从第九行开始,向后查4行。每页显示4行数据。

String[] sData = new String[6]; 定义一个大小为6的字符串数组,

for(int j=0;j<rsmd.getColumnCount();j++){*******************getColumnCount()什么意思有啥用????
sData[j]=rs.getString(j+1);
}

这句是循环遍历,将数据库的数据循环遍历的赋给字符串数组。
亲,希望我的回答对你有帮助。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-24
getColumnCount()是获取列数,sData存放每列数据,for循环中的sData[j]=rs.getString(j+1)把结果中当前行的第一列到最后一列数据存放到sData中,sData数组其实就是一行数据
第2个回答  2014-01-24
从ResultSetMetaData中取得sql语句执行后返回数据的列数
例如select a,b,c from tableA,则返回值应该是3
sData是用来放每一行数据的,每个元素放一个字段的内容
相似回答