您的位置:首页 > 数据库

数据库记录分页显示的类

2008-04-05 17:00 429 查看
忙了一下午,写了个分页显示的类,自我感觉写的还不错,所以就贴出来了,呵呵!!!

不过还是有问题:每次翻页操作都要查询整个数据库,如果数据库很大的话,真不敢想象会发生什么事情。如果谁有解决的方法,希望能拿出来分享一下,先谢了!!!!!!!!!!!!!!!


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;


}


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: