动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP.NET技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ ASP.NET技巧 ]的信息



本月文章推荐
.ASP.NET网络编程中经常用到的27个.
.编写高性能Web应用程序的10个入门.
.Scott Mitchell 的ASP.NET 2.0数.
.优化ASP.NET应用程序性能研究与探.
.从asp.net页面发送电子邮件 .
.DataGrid 的 全选/取消全选 控制.
.编写高性能Web应用程序的10个技巧.
.用asp.net还原与恢复sqlserver数.
.asp.net中对数据库表插入null空值.
.使用ASP.NET Atlas编写显示真实进.
.使用FileUpload控件上传图片并自.
.客户端回调实现gridView无刷新分.
.ASP.NET AJAX正式版带来的Valida.
.Sys.ScriptLoader与JS加载进度条.
.让你的.NET程序兼容不同版本的Dl.
.ASP.NET Atlas April CTP发布.
.如何在.NET中访问MySQL数据库.
.通过探测邮件服务器进行Email地址.
.简写的通用数据层代码.
.ASP.NET2.0下利用javascript实现.

将以前写的SQL2分查找法通用分页存储过程算法 改成.net类实现

发表日期:2007-1-30 |


using System;

namespace CountryPark.DAL
...{
    /**//**//**//// <summary>
    /// PageList 的摘要说明。
    /// </summary>
    public sealed class PageList
    ...{
        static PageList()
        ...{
        }
       
        /**//**//**//// <summary>
        /// 分页查询数据记录总数获取
        /// </summary>
        /// <param name="_tbName">----要显示的表或多个表的连接</param>
        /// <param name="_ID">----主表的主键</param>
        /// <param name="_strCondition">----查询条件,不需where</param>       
        /// <param name="_Dist">----是否添加查询字段的 DISTINCT 默认0不添加/1添加</param>
        /// <returns></returns>
        public static string getPageListCounts(string _tbName, string _ID, string _strCondition, int _Dist)
        ...{           
            //---存放取得查询结果总数的查询语句                   
            //---对含有DISTINCT的查询进行SQL构造
            //---对含有DISTINCT的总数查询进行SQL构造
            string strTmp="", SqlSelect="", SqlCounts="";
           
            if (_Dist == 0)
            ...{
                SqlSelect = "SELECT ";
                SqlCounts = "COUNT(*)";
            }
            else
            ...{
                SqlSelect = "SELECT DISTINCT ";
                SqlCounts = "COUNT(DISTINCT "+ _ID +")";
            }
            if (_strCondition == string.Empty)
            ...{
                strTmp = SqlSelect +" @Counts="+ SqlCounts +" FROM "+ _tbName;
            }
            else
            ...{
                strTmp = SqlSelect +" @Counts="+ SqlCounts +" FROM "+ " WHERE (1=1) "+ _strCondition;
            }
            return strTmp;
        }


        /**//**//**//// <summary>
        /// 获取分页数据查询SQL
        /// </summary>
        /// <param name="_tbName">----要显示的表或多个表的连接</param>
        /// <param name="_fldName">----要显示的字段列表</param>
        /// <param name="_PageSize">----每页显示的记录个数</param>
        /// <param name="_Page">----要显示那一页的记录</param>
        /// <param name="_PageCount">----查询结果分页后的总页数</param>
        /// <param name="_Counts">----查询到的记录数</param>
        /// <param name="_fldSort">----排序字段列表或条件(如果是多字段排列Sort指代最后一个排序字段的排列顺序(最后一个排序字段不加排序标记)--程序传参如:' SortA Asc,SortB Desc,SortC ')</param>
        /// <param name="_Sort">----排序方法,0为升序,1为降序</param>
        /// <param name="_strCondition">----查询条件,不需where</param>
        /// <param name="_ID">----主表的主键</param>
        /// <param name="_Dist">----是否添加查询字段的 DISTINCT 默认0不添加/1添加</param>
        /// <returns></returns>                                                                          
        public static string getPageListSql(string _tbName, string _fldName, int _PageSize, int _Page, out int _PageCount, int _Counts, string _fldSort, int _Sort, string _strCondition, string _ID, int _Dist)
        ...{               
            string strTmp=""; //---strTmp用于返回的SQL语句
            string SqlSelect="", strSortType="", strFSortType="";  

            if (_Dist == 0)
            ...{
                SqlSelect = "SELECT ";           
            }
            else
            ...{
                SqlSelect = "SELECT DISTINCT ";               
            }

            if (_Sort == 0)
            ...{
                strFSortType = " ASC";
                strSortType = " DESC";
            }
            else
            ...{
                strFSortType = " DESC";
                strSortType = " ASC";
            }

//            ----取得查询结果总数量-----
            int tmpCounts = 1;
            if (_Counts != 0)
            ...{
                tmpCounts = _Counts;
            }
//          --取得分页总数
            _PageCount = (tmpCounts + _PageSize - 1)/_PageSize;
            //    /**//**当前页大于总页数 取最后一页**/
            if (_Page > _PageCount)
            ...{
                _Page = _PageCount;
            }
            if (_Page <= 0)
            ...{
                _Page = 1;
            }
//          --/*-----数据分页2分处理-------*/
            int pageIndex = tmpCounts/_PageSize;
            int lastCount = tmpCounts%_PageSize;
            if (lastCount > 0)
            ...{
                pageIndex = pageIndex + 1;
            }
            else
            ...{
                lastCount = _PageSize;
            }
            if (_strCondition == string.Empty) // --没有设置显示条件
            ...{
                if (pageIndex < 2 || _Page <= (pageIndex/2 + pageIndex%2))  //--前半部分数据处理
                ...{
                    if (_Page == 1)
                    ...{
                        strTmp = SqlSelect +" TOP "+ _PageSize +" "+ _fldName +" FROM "+ _tbName +" ORDER BY "+ _fldSort +" "+ strFSortType;
                    }
                    else
                    ...{
                        strTmp = SqlSelect +" TOP "+ _PageSize +" "+ _fldName +" FROM "+ _tbName +" WHERE "+ _ID +" <(SELECT MIN("+ _ID +") FROM ("+ SqlSelect +" TOP "+ _PageSize*(_Page-1) +" "+ _ID +" FROM "+ _tbName +
                            " ORDER BY "+ _fldSort +" "+ strFSortType +") AS TBMinID) ORDER BY "+ _fldSort +" "+ strFSortType;
                    }
                }
                else
                ...{
                    _Page = pageIndex - _Page + 1; //后半部分数据处理
                    if (_Page <= 1) //--最后一页数据显示
                    ...{
                        strTmp = SqlSelect +" * FROM ("+ SqlSelect +" TOP "+ lastCount +" "+ _fldName +" FROM "+ _tbName +" ORDER BY "+ _fldSort +" "+ strSortType +") AS TempTB"+ " ORDER BY "+ _fldSort +" "+ strFSortType;
                    }
                    else
                    ...{
                        strTmp = SqlSelect +" * FROM ("+ SqlSelect +" TOP "+ _PageSize +" "+ _fldName +" FROM "+ _tbName +
                            " WHERE "+ _ID +" >(SELECT MAX("+ _ID +") FROM("+ SqlSelect +" TOP "+ (_PageSize*(_Page-2)+lastCount) +" "+ _ID +" FROM "+ _tbName +
                            " ORDER BY "+ _fldSort +" "+ strSortType +") AS TBMaxID) ORDER BY "+ _fldSort +" "+ strSortType +") AS TempTB ORDER BY "+ _fldSort +" "+ strFSortType;
                    }
                }
            }
            else // --有查询条件
            ...{
                if (pageIndex < 2 || _Page <=(pageIndex/2 + pageIndex%2))//--前半部分数据处理
                ...{
                    if (_Page == 1)
                    ...{
                        strTmp = SqlSelect +" TOP "+ _PageSize +" "+ _fldName +" FROM "+ _tbName +"WHERE 1=1 "+ _strCondition +" ORDER BY "+ _fldSort +" "+ strFSortType;
                    }
                    else
                    ...{
                        strTmp = SqlSelect +" TOP "+ _PageSize +" "+ _fldName +" FROM "+ _tbName +
                            " WHERE "+ _ID +" <(SELECT MIN("+ _ID +") FROM ("+ SqlSelect +" TOP "+ (_PageSize*(_Page-1)) +" "+ _ID +" FROM " +_tbName +
                            " WHERE 1=1 "+ _strCondition +" ORDER BY "+ _fldSort +" "+ strFSortType +") AS TBMaxID) "+ _strCondition +
                            " ORDER BY "+ _fldSort +" "+ strFSortType;                           
                    }
                }
                else //--后半部分数据处理
                ...{
                    _Page = pageIndex-_Page+1;
                    if (_Page <= 1) //--最后一页数据显示
                    ...{
                        strTmp = SqlSelect +" * FROM ("+ SqlSelect +" TOP "+ lastCount +" "+ _fldName +" FROM "+ _tbName +
                            " WHERE 1=1 "+ _strCondition +" ORDER BY "+ _fldSort +" "+ strSortType +") AS TempTB ORDER BY "+ _fldSort +" "+ strFSortType;
                    }
                    else
                    ...{  
                        strTmp = SqlSelect +" * FROM ("+ SqlSelect +" TOP "+ _PageSize +" "+ _fldName +" FROM "+ _tbName +
                            " WHERE "+ _ID +" >(SELECT MAX("+ _ID +") FROM("+ SqlSelect +" TOP "+ (_PageSize*(_Page-2)+ lastCount) +" "+ _ID +" FROM "+ _tbName +
                            " WHERE 1=1 "+ _strCondition +" ORDER BY "+ _fldSort +" "+ strSortType +") AS TBMaxID) "+ _strCondition +
                            " ORDER BY "+ _fldSort +" "+ strSortType +") AS TempTB ORDER BY "+ _fldSort +" "+ strFSortType;
                    }
                }
            }

            return strTmp;
        }
    }
}
--以上代码是针对之前写的TOP MAX模式的分页存储过程修改
--以上分页算法对SQL SERVER 和 ACCESS同样有效
参见:http://www.cnblogs.com/hertcloud/archive/2005/12/21/301327.html

 

 

//调用函数例子
public IList getParkDataList(string key, int curPage, out int pageCount, int pageSize, int Counts)
        ...{
           
            IList list = new ArrayList();

            string SECLECT_FIELD = "T_Park.ParkID, T_Park.ParkTitle, T_Park.ParkLetter, T_ParkArea.AreaName, T_ParkType.ParkTypeName ";
            string SECLECT_TABLE = "T_ParkType INNER JOIN (T_ParkArea INNER JOIN T_Park ON T_ParkArea.ParkAreaID = T_Park.ParkAreaID) ON T_ParkType.ParkTypeID = T_Park.ParkTypeID";
            string SECLECT_CONDITION = string.Empty;


            if (key != string.Empty)
            ...{
                SECLECT_CONDITION = " AND T_Park.ParkTitle like '%"+ key +"%'";
            }

            string SELECT_ID = "ParkID";
            string SELECT_FLDSORT = "ParkID";
            int SELECT_SORT = 1;
            int SELECT_DIST = 0;
            string SQL = PageList.getPageListSql(SECLECT_TABLE, SECLECT_FIELD, pageSize, curPage, out pageCount, Counts, SELECT_FLDSORT, SELECT_SORT, SECLECT_CONDITION, SELECT_ID, SELECT_DIST);
            //string strCondition;       
            OleDb db = new OleDb();
            ParkBE park;           
            using(OleDbDataReader dr = (OleDbDataReader)db.ExecuteReader(CommonFun.GetConnectionString(), CommandType.Text, SQL))
            ...{
                while (dr.Read())
                ...{   
                    park = new ParkBE();
                    park.ParkID = Convert.ToInt32(dr[0]);
                    park.ParkTitle = dr[1].ToString();
                    park.ParkLetter = dr[2].ToString();
                    park.ParkAreaName = dr[3].ToString();
                    park.ParkTypeName = dr[4].ToString();
                    list.Add(park);
                }
            }           
            return list;
        }
http://blog.csdn.net/todaywlq/archive/2007/01/29/1497418.aspx

上一篇:.NET自动字符编码识别程序库 NChardet 人气:3358
下一篇:关于URL传递日文字符乱码问题的解决方案 人气:3945
浏览全部.net的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-25 WikyBlog v1.7.0.1 多国语言版
2008-7-25 乐彼网上开店系统(56770 Eshop)
2008-7-25 赛特网站管理系统sitecms v3.6.0
2008-7-25 Modoer多功能点评系统 v1.0.1 Bu
2008-7-25 Shangducms Teamsuit! v1.1.0 开
2008-7-25 幻影动漫网视频系统(Ppdong) v1.
2008-7-25 acteecompany企业网站建设系统 v
2008-7-25 恒浪整合管理系统 ims v4.1 ACCE
2008-7-25 艺术图库系统 v1.0 beta
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号