JAVA实现关系数据库的翻页

JAVA实现关系数据库的翻页

    这个方法没有什么特别的,其实也算不上原创。也是在学习中得出来的。因此如果侵犯了别人的权益,请来信通知。为了方便初学者了解原理,代码中我没有使用任何框架。代码可以适用于mysql,oracle,sqlserver,db2等等主流关系数据库。
    以下代码是我从自己以前写的程序中抽取出来的核心,只能表述思路,如要使用,可能还需要很多调整。

(1) 数据库表sys_User定义如下:
           ID   Name    Email                  Desc        …
           1    masse   karkaiy_007@163.com    当午        …
       其中,ID为整型,其它均为字符串。

(2) User类,请自行为每个方法添加getter和setter方法。为了方便,我写了User(ResultSet)这个构造函数。
public class User
{
    public User(ResultSet rs)
    {
        id = rs.getInt("ID");
        name = rs.getString("Name");
        email = rs.getString("Email");
        desc = rs.getString("Desc");
    }
    private int id;
    private String name;
    private String email;
    private String desc;
}

(3) sysUserTable类,用于数据库读取,我这里仅仅给出了最核心部分。其中对于start,count等的有效性参数,请自行判断;sql语句如果有查询的filter,或者order等语句,也可根据情况自行调整。我只给出程序框架。

// 取出从start开始的count条记录。如,start为1,count为20,则取出数据库前20条记录
public class SysUserTable
{
   
    public List getUsers(Connection conn, int start, int count) throws
        Exception
    {
        PreparedStatement pStmt = null;
        ResultSet rs = null;
        List result = new ArrayList();
        try
        {
            String sql = "SELECT * FROM sys_User";
            pStmt = conn.preparedStatement(sql);
            rs = pStmt.executeQuery();
            if (rs.absolute(startRow))
            {
                result.add(new User(rs));
                for (int rowIndex = 0; rowIndex < rowCount - 1; rowIndex++)
                {
                    if (!rs.next())
                    {
                        break;
                    }
                    result.add(new User(rs));
                }
            }
        }
        catch (Exception e)
        {
            throw e; // process exception here
        }
        finally
        {
            // close rs & pStmt here
        }
        return result;
    }
}

(4) JSP页面的实现。基本的思路就是,根据当前页数,计算出需要的start即可。如指定每页count条,当前在第n页,那么start=(n-1)*count+1。然后作为参数,即可得到翻页结果集。具体的实现可以用传统的翻页,也可用ajax。这里灵活性很大,就不再赘述了。 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值