`
starbhhc
  • 浏览: 658061 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

SqlServer数据库中使用top分页

SQL 
阅读更多
//分页检索数据   
    public List getDataSplit(String table,String orderCoulmn,String condition,int page,int pageCount){   
        long start = System.currentTimeMillis();   
        List list = new ArrayList();   
        Connection conn = this.getConn();   
        Statement stmt = null;   
        ResultSet rs = null;   
           
        String orderby = "order by zj";//默认   
        if(orderCoulmn!=null && !orderCoulmn.trim().equals(""))orderby = orderby.replace("zj",orderCoulmn);   
        if(condition!=null && !condition.trim().equals(""))condition = " and "+condition;   
           
        try {   
            stmt = conn.createStatement();   
            rs = stmt.executeQuery("select count(*) from "+table+" where 1=1 "+condition);   
            rs.next();   
            int count = rs.getInt(1);   
            list.add(new Integer(count));//把总数加入到结果集中   
            if(page <=0)page=1;   
            int number = (page-1)*pageCount;   
            if(number > count)number = (count-pageCount+1)/pageCount  ;   
               
//          String sql = "select top "+pageCount+" * from "+table+" where ("+orderCoulmn+" not in (select top "+number+" "+orderCoulmn+" FROM "+table+" where 1=1 "+condition+" "+orderby+")) "+condition+" "+orderby;   
            String sql = "select top "+pageCount+" * from "+table+" where (zj not in (select top "+number+" zj FROM "+table+" where 1=1 "+condition+" "+orderby+")) "+condition+" "+orderby;   
//          System.out.println(sql+"\n");   
            rs = stmt.executeQuery(sql);   
               
            int length = rs.getMetaData().getColumnCount();   
            while(rs.next()){   
                Map map = new HashMap();   
                for (int i = 1; i <= length; i++) {   
                    Object value = rs.getObject(i);   
                    value=value==null?"":value;   
                    map.put(rs.getMetaData().getColumnName(i).toLowerCase(),new String(value.toString().getBytes("ISO-8859-1"),"GBK"));//可能需要转码   
                }   
                   
                list.add(map);   
            }   
            rs.close();   
            stmt.close();   
        } catch (Exception e) {   
            e.printStackTrace();   
            NetSystem.log.log(e.getLocalizedMessage());   
            try {   
                if(rs != null)   
                    rs.close();   
                if(stmt != null)   
                    stmt.close();   
            } catch (Exception e1) {}   
        }finally{   
            this.freeConnection();   
        }   
        long end = System.currentTimeMillis();   
        //50W数据量,主键建立聚集索引,此方法耗时基本在0.219-1.188之间(个人电脑配置)   
//      System.out.println("耗时: "+(end-start)+" 毫秒"+"  秒:"+(end-start)/1000f);   
        return list;   
    }  
分享到:
评论

相关推荐

    SqlServer数据库中的分页语句

    在SQL Server数据库中,分页查询是一个非常重要的功能,它允许我们从大量数据中只获取一部分,例如,每次只返回一页的数据,以提高查询效率和用户体验。本篇将深入探讨SQL Server实现分页查询的语句及其工作原理。 ...

    SqlServer数据库分页

    在SQL Server数据库中,分页是一种常见的数据检索技术,它允许我们从大量数据中按需获取一部分结果,而不是一次性加载所有记录。这在处理大型数据集时尤其有用,可以提高性能,减少网络传输,以及提供更好的用户体验...

    sql server分页技术(SQL Server 与Access数据库相关分页技术)

    在SQL Server中,分页技术是一项关键功能,尤其在处理大量数据时,它能有效地提高查询性能并优化用户体验。在Web应用中,分页通常用于显示数据库中的数据列表,避免一次性加载所有数据导致的性能问题。以下是几种...

    SQLServer数据库分页查询

    ### SQL Server 数据库分页查询方法详解 #### 一、背景与问题定义 在实际的数据库操作中,分页查询是非常常见的需求之一。对于大型数据集来说,一次加载所有数据到前端显示是不现实的,这不仅会增加服务器负担,还...

    Sqlserver2005数据库级别异步分页

    在同步分页中,用户请求页面时,服务器会立即执行查询并返回结果,可能导致用户等待时间较长。而异步分页则先返回一个较小的数据集,随后在后台继续加载剩余数据,用户可以立即看到部分结果,并在后续加载过程中继续...

    sqlserver+group by分组查询分页存储过程

    在SQL Server中,分页可以通过多种方法实现,其中一种常见方法是使用`TOP`关键字结合`OFFSET`。然而,在较旧的SQL Server版本中,可能需要更复杂的查询结构,如在给定的代码示例中所示,使用了动态SQL和变量来构建...

    sqlserver海量数据TOP分页

    在SQL Server数据库中,处理海量数据的查询是一个常见的挑战,特别是在需要进行分页显示的时候。传统的分页方式可能会导致性能瓶颈,特别是在数据量极大的情况下。本文将深入探讨如何使用SQL Server中的`TOP`语句来...

    sql分页 sqlserver中存储过程分页

    存储过程是一种预先编译好的 SQL 代码块,存储在 SQL Server 数据库中。使用存储过程进行分页查询的好处包括:提高执行效率、增强代码复用性以及提供更好的安全性等。 #### 示例存储过程分析 下面将详细分析给定的...

    C#连接SqlServer数据库帮助类,SqlServerHelp

    本篇将详细探讨如何使用C#连接和操作SQL Server数据库,以`SqlServerHelp`类为例,阐述其中的关键知识点。 首先,`SqlServerHelp`类是为简化与SQL Server数据库的交互而设计的。在C#中,我们通常使用ADO.NET库,它...

    Oracle,mysql,sqlserver等各种数据库的分页方法

    SQL Server中的分页实现方式相对复杂,主要通过子查询结合`TOP`关键字来完成。 #### 2. 使用`TOP`与子查询 这种方法利用了`TOP`关键字来限制结果集的数量,并通过子查询来排除前几条记录,从而实现分页效果。 - *...

    java语言的分页查询功能(mysql和sql server)

    本教程将详细讲解如何在Java中实现不分框架的分页查询,同时涵盖对MySQL和SQL Server数据库的支持。 一、基础知识 1. 分页概念:分页是将大量数据按一定数量分成若干部分,每次只加载一部分到内存中显示,用户可以...

    jPage分页(只针对Sql Server数据库)

    1、本版分页只针对Sql Server数据库,采用top n分页方式,节约资源。 2、支持GridView、DataGrid、DataList等数据控件。 3、本分页已应用于数据量百万级的项目中。 4、使用简单,并包含多种样式布局 一、使用方法:...

    sqlserver数据库著名上级面试题目

    在SQL Server数据库面试中,掌握一系列关键操作是至关重要的。以下是一些常见面试题目的详细解答,涵盖了数据检索、表复制、数据转换以及临时表的使用等知识点。 1. **查询特定范围的记录** - 当需要查询第30到第...

    struts2+sqlserver2000+jstl+分页

    综上所述,这个"struts2+sqlserver2000+jstl+分页"示例项目展示了如何整合这四个技术,构建一个能够动态分页显示数据库内容的Web应用。开发过程中,需要理解每个技术的作用,以及它们之间的协作方式。例如,Struts2...

    数据库基本概念 ,常用数据库,sql server数据库,Access数据库,sql语句,数据库连接,数据库分页显示

    - **分页原理**:通过限制查询结果集的数量来实现,通常结合 LIMIT 和 OFFSET 关键字(SQL Server 中为 TOP 和 ROW_NUMBER 函数)。 - 示例: ```sql SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY id...

    常用数据库sql分页

    SQL Server的分页语句使用TOP关键字,语法为: ```sql SELECT TOP count * FROM table_name WHERE (ID NOT IN (SELECT TOP offset id FROM table_name ORDER BY id)); ``` 其中,offset指定从第几行开始提取,count...

    50种方法巧妙优化你的SQL Server数据库

    ### 50种方法巧妙优化你的SQL Server数据库 在日常的数据库管理与维护工作中,我们经常会遇到查询速度慢的问题,这不仅影响了系统的性能,也降低了用户体验。本文将基于给出的信息,详细介绍可能导致查询速度变慢的...

    SQLServer分页.rar

    在SQL Server数据库管理中,分页查询是一种常用的技术,它允许用户按页面浏览大量数据,而不是一次性加载所有结果。这在处理大型数据集时尤为重要,因为它可以提高性能,减少服务器负担,并提供更好的用户体验。本...

    关于SQL Server SQL语句查询分页数据的解决方案

    针对这一需求,本文将详细介绍如何在SQL Server中实现有效的分页查询。 ### 方法1:使用NOT IN 这种方法通过先选择前300100条记录的序列号(这里假设`fldserialNo`是唯一标识每一行的字段),然后在外层查询中排除...

    SqlServer操作数据库工具附源码

    标题中的"SqlServer操作数据库工具附源码"暗示了这是一个专门用于与SQL Server交互的程序,可能是通过编写代码实现对数据库的各种操作,如查询、插入、更新和删除等。这样的工具通常包括连接数据库的逻辑,执行SQL...

Global site tag (gtag.js) - Google Analytics