忙了一下午,写了个分页显示的类,自我感觉写的还不错,所以就贴出来了,呵呵!!!
不过还是有问题:每次翻页操作都要查询整个数据库,如果数据库很大的话,真不敢想象会发生什么事情。如果谁有解决的方法,希望能拿出来分享一下,先谢了!!!!!!!!!!!!!!!
import
java.io.
*
;
import java.sql. * ;
import java.util. * ;
public class GetPage ... {
private int pageSize = 6; //每一页显示的记录数
private int pageCount = 0; //总的页数
private int currentPage = 1; //当前显示的页
//"showVar" 值为"1"表示显示第一页,为"2"表示显示上一页,为"3"表示显示下一页,为"4"表示显示最 后页,否则显示当前页。
public Vector<Vector> doGet(int showVar)...{
Vector<Vector> all = new Vector<Vector>(); //当前页的记录集
try ...{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //定义数据库驱动
String url =
"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=lesson"; //连接数据库"lesson"
String user = "sa"; //用户名
String password = "123"; //密码
Connection con = DriverManager.getConnection(url, user, password); //连接
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql = "select * from upLoad"; //查询语句
ResultSet rs = stmt.executeQuery(sql);
rs.last();
int lastrow = rs.getRow(); //获取记录的总行数
pageCount = (lastrow % pageSize == 0) ? (lastrow / pageSize) : (lastrow / pageSize + 1);
if (pageCount == 0) ...{
pageCount = 1;
}
switch (showVar) ...{
case 1:
currentPage = 1;
break;
case 2:
currentPage = (currentPage > 1) ? (currentPage - 1) : 1;
break;
case 3:
currentPage = (currentPage < pageCount) ? (currentPage + 1) : pageCount;
break;
case 4:
currentPage = pageCount;
break;
default:
currentPage = currentPage;
}
int posion = (currentPage - 1) * pageSize + 1;
rs.absolute(posion);
rs.previous(); //定位指针
//****************获取当前页的数据*******************
Vector<Integer> id = new Vector<Integer>();
Vector<String> zhuti = new Vector<String>();
for (int i = 0; i < pageSize && rs.next(); i++) ...{
id.add(rs.getInt("id"));
zhuti.add(rs.getString("zhuti"));
}
all.add(id);
all.add(zhuti);
//*************************************************
rs.close();
stmt.close();
con.close();
}
catch (Exception ex) ...{
ex.printStackTrace();
}
return all;
}
public int getPageCount()...{
return pageCount;
}
public int getCurrentPage()...{
return currentPage;
}
}
import java.sql. * ;
import java.util. * ;
public class GetPage ... {
private int pageSize = 6; //每一页显示的记录数
private int pageCount = 0; //总的页数
private int currentPage = 1; //当前显示的页
//"showVar" 值为"1"表示显示第一页,为"2"表示显示上一页,为"3"表示显示下一页,为"4"表示显示最 后页,否则显示当前页。
public Vector<Vector> doGet(int showVar)...{
Vector<Vector> all = new Vector<Vector>(); //当前页的记录集
try ...{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //定义数据库驱动
String url =
"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=lesson"; //连接数据库"lesson"
String user = "sa"; //用户名
String password = "123"; //密码
Connection con = DriverManager.getConnection(url, user, password); //连接
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql = "select * from upLoad"; //查询语句
ResultSet rs = stmt.executeQuery(sql);
rs.last();
int lastrow = rs.getRow(); //获取记录的总行数
pageCount = (lastrow % pageSize == 0) ? (lastrow / pageSize) : (lastrow / pageSize + 1);
if (pageCount == 0) ...{
pageCount = 1;
}
switch (showVar) ...{
case 1:
currentPage = 1;
break;
case 2:
currentPage = (currentPage > 1) ? (currentPage - 1) : 1;
break;
case 3:
currentPage = (currentPage < pageCount) ? (currentPage + 1) : pageCount;
break;
case 4:
currentPage = pageCount;
break;
default:
currentPage = currentPage;
}
int posion = (currentPage - 1) * pageSize + 1;
rs.absolute(posion);
rs.previous(); //定位指针
//****************获取当前页的数据*******************
Vector<Integer> id = new Vector<Integer>();
Vector<String> zhuti = new Vector<String>();
for (int i = 0; i < pageSize && rs.next(); i++) ...{
id.add(rs.getInt("id"));
zhuti.add(rs.getString("zhuti"));
}
all.add(id);
all.add(zhuti);
//*************************************************
rs.close();
stmt.close();
con.close();
}
catch (Exception ex) ...{
ex.printStackTrace();
}
return all;
}
public int getPageCount()...{
return pageCount;
}
public int getCurrentPage()...{
return currentPage;
}
}