基于java实现的多种数据库的分页解析

本文介绍了在Oracle、MySQL和Sybase等不同数据库中实现分页查询的方法,包括使用ROWNUM、LIMIT关键字及结果集定位来获取指定范围的数据记录。

Oracle用rownum实现游标

String finalSql="select * from (select rownum as my_rownum,table_a.* from("
    +nowPageSql+") table_a where rownum<="+endNum+") where my_rownum>"+startNum;

部分代码:

String finalSql="select * from (select rownum as my_rownum,table_a.* from("
 +nowPageSql+") table_a where rownum<="+endNum+") where my_rownum>"+startNum;
   
rs = stmt.executeQuery(finalSql);

ResultSetMetaData rsmd = rs.getMetaData();
int nowColumn = rsmd.getColumnCount(); 
this.setRowNum(nowColumn);
int r = 1;

while (rs.next())
{  
 
 for (int i=0;i<nowColumn;i++)
 {
     String temp = rs.getString(i+1);
    
  if(temp == null)
  {
   temp = "";
  }

  returnArr.add(temp);

 }

}  
stmt.close();
return returnArr;

 

mySql用limit实现指定行查询

String finalSql = nowPageSql + " limit " + startNum  + "," + (endNum-startNum);

部分代码:

String finalSql = nowPageSql + " limit " + startNum  + "," + (endNum-startNum);
rs = stmt.executeQuery(finalSql);

ResultSetMetaData rsmd = rs.getMetaData();
int nowColumn = rsmd.getColumnCount(); 
this.setRowNum(nowColumn);
int r = 1;

while (rs.next())
{  
 
 for (int i=0;i<nowColumn;i++)
 {
     String temp = rs.getString(i+1);
    
  if(temp == null)
  {
   temp = "";
  }

  returnArr.add(temp);

 }

}  
stmt.close();
return returnArr;


Sybase用方法:  rs.absolute(startNum+1);

部分代码:

stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);   

   rs = stmt.executeQuery(nowPageSql);
   
   ResultSetMetaData rsmd = rs.getMetaData();
   int nowColumn = rsmd.getColumnCount(); 
   this.setRowNum(nowColumn);
   int r = 1;
   
   while (rs.next())
   {
    if (r == 1)
     rs.absolute(startNum+1);
    
    for (int i=0;i<nowColumn;i++)
    {
        String temp = rs.getString(i+1);
       
     if(temp == null)
     {
      temp = "";
     }

     returnArr.add(temp);

    }
    if (r++ >= pageNum)
     break;
   }  
   stmt.close();
   return returnArr;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值