微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用"SELECT TOP"实现分页

import java.sql.*;

import java.util.*;

public class GetPage {

  private int pageSize = 6//每一页显示的记录数

  private int pageCount = 1//总的页数

  private int currentPage = 1//当前显示的页

  
//"showVar" 值为"-1"表示显示最后页,为"-2"表示显示上一页,为"-3"表示显示下一页,否则显示当前页。

  public Vector<Vector> doGet(int showVar) {

    Vector
<Vector> all = new Vector<Vector> (); //当前页的记录集

    Statement stmt = null;

    ResultSet rs 
= null;

    Connection con 
= null;


    
try {

      Class.forName(
"com.microsoft.jdbc.sqlserver.sqlServerDriver"); //定义数据库驱动

      String url =

          
"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=lesson"//连接数据库"lesson"

      String user = "sa"//用户名

      String password = "123"//密码

      con = DriverManager.getConnection(url, user, password); //连接

      stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

                                 ResultSet.CONCUR_UPDATABLE);

      String sql 
= "SELECT COUNT(*) FROM test"//获取纪录总条数

      rs = stmt.executeQuery(sql);

      rs.next();

      
int allRows = rs.getInt(1);

      pageCount 
= (allRows % pageSize == 0? (allRows / pageSize) :

          (allRows 
/ pageSize + 1);

      
if (pageCount == 0{

        pageCount 
= 1;

      }

      
switch (showVar) {

        
case -1:

          currentPage 
= pageCount;

          
break;

        
case -2:

          currentPage 
= (currentPage > 1? (currentPage - 1) : 1;

          
break;

        
case -3:

          currentPage 
= (currentPage < pageCount) ? (currentPage + 1) :

              pageCount;

          
break;

        
default:

          
if (showVar > 0 && showVar <= pageCount) {

            currentPage 
= showVar;

          }

      }

      
//****************从数据库中读取当前页的数据***********

      if (currentPage == 1{

        sql 
= "SELECT TOP " + pageSize +

            
" * FROM test ORDER BY ID";

      }

      
else {

        sql 
= "SELECT TOP " + pageSize +

            
" * FROM test WHERE(ID >(SELECT MAX(id) FROM(SELECT TOP " +

            pageSize 
* (currentPage - 1+

            
" id FROM test ORDER BY id) AS T)) ORDER BY ID";

      }

      rs 
= stmt.executeQuery(sql);

      
//*************************************************

      
//****************获取当前页的数据*******************

       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);

      
//*************************************************


    }

    
catch (Exception ex) {

      ex.printstacktrace();

    }

    
finally {

      
if (rs != null{

        
try {

          rs.close();

        }

        
catch (Exception e) {}

      }

      
if (stmt != null{

        
try {

          stmt.close();

        }

        
catch (Exception e) {}

      }

      
if (con != null{

        
try {

          con.close();

        }

        
catch (Exception e) {}

      }

    }


    
return all;

  }


  
public int getPageCount() {

    
return pageCount;

  }


  
public int getCurrentPage() {

    
return currentPage;

  }

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐