java数据库编程(11) 查询结果分页

  1. 因为离线RowSet是将结果集读取到内存中的,如果数据库太大的话,一次性读取到内存中,可能会造成内存溢出,所以RowSet还提供了分页功能,即每次只装载数据库中的某几行数据。
  2. CachedRowSet提供了以下方法来控制分页
    1. populate(ResultSet rs, int StartRow)从第几行开始装在数据
    2. SetPageSize(int PageSize)每一页的大小(即每次从数据库中读取多少行数据)
  3. 具体的讲解穿插在代码中
    import javax.sql.rowset.CachedRowSet;
    import javax.sql.rowset.RowSetFactory;
    import javax.sql.rowset.RowSetProvider;
    import java.io.FileInputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.Properties;
    
    public class PagesTest {
        private static String driver;
        private static String url;
        private static String user;
        private static String pass;
    
    
        public void initParam(String fileName) throws Exception{
            Properties prop =  new Properties();
            prop.load(new FileInputStream(fileName));
            driver = prop.getProperty("driver");
            url  = prop.getProperty("url");
            user = prop.getProperty("user");
            pass = prop.getProperty("pass");
        }
    
        public CachedRowSet query(String sql, int pageSize, int page) throws Exception{
            Class.forName(driver);
            try(
                    Connection conn = DriverManager.getConnection(url, user, pass);
                    Statement stmt = conn.createStatement();
                    ResultSet rs = stmt.executeQuery(sql))
            {
                RowSetFactory factory = RowSetProvider.newFactory();
                CachedRowSet cacheRs = factory.createCachedRowSet();
    
    //            设置每页显示的行数,也就是说每次装填到CachedRowSet中的行数是多多少
                cacheRs.setPageSize(pageSize);
    
    //            将rs中第几行开始装填到CachedRowSet中
                cacheRs.populate(rs, (page -1) * pageSize + 1);
                return cacheRs;
            }
        }
    
        public static void main(String args[]) throws Exception{
            PagesTest pagesTest = new PagesTest();
            pagesTest.initParam("mysql.ini");
            CachedRowSet rs = pagesTest.query("select * from students", 2,1);
            while (rs.next()){
                System.out.println(rs.getString(1) + "\t" + rs.getString(2));
            }
        }
    }
    //运行程序,看到以下输出
    //        S2	Marry
    //        S3	Tom

猜你喜欢

转载自blog.csdn.net/weixin_39452731/article/details/83045180
今日推荐