菜单

澳门太阳集团NET和MSSQL高性能分页实例代码,类数据与类方法

2020年1月31日 - 新闻中心
澳门太阳集团NET和MSSQL高性能分页实例代码,类数据与类方法

第一是积累进程,只抽取自个儿供给的这段数据,假诺页数超越数据总量,自动回到最后风流倜傥页的纪要:

澳门太阳集团NET和MSSQL高性能分页实例代码,类数据与类方法。static 数据成员

有点数目用于表述类的情形。比方 Human 类,大家能够用“人口”来代表 Human
类的对象的总量。“人口”间接描述类的景况,而不是某些对象。

类的有所目的分享“人口”数据。那样的数量被称作 类数据成员(class
field)。

在类定义中,大家利用 static 关键字,来表明类数据成员,比如:

class Human
{   
    public Human(int h)
    {
        this.height = h;
    }

    public int getHeight()
    {
       return this.height;
    }

    public void growHeight(int h)
    {
        this.height = this.height + h;
    }

    public void breath()
    {
        System.out.println("hu...hu...");
    }

    private int height; 

    // 类方法
    public static int getPopulation()
    {
        return Human.population;
    }

    // 类数据成员
    private static int population;
    private static boolean is_mammal = true;
}

咱俩定义了三个类数据成员:populationis_mammal。所有 Human
对象都分享一个 population 数据(这里默以为 0);大肆Human 对象的
is_mammal (是哺乳动物)的性质都为 true

类数据成员平等要安装访谈权限。对于证明为 public 的类数据成员,能够应用
class.field 的不二等秘书诀如故
object.field(假诺存在这里类的对象)的点子从表面直接访问。那二种访问情势都以合情的,因为类数据成员能够被以为是类的性质,能够认为是有所成员分享的习性。

假如类数据成员被定义为 private,那么该类数据成员只可以从类的中间访谈。

上面将 is_mammal 设置成了
public,只是为着演示。那样做是挺危急的,万后生可畏有人利用
Human.is_mammal=false;
全部人类都遭殃。依然要命基本尺度,要硬着头皮将数据设置为 private


set ANSI_NULLS ONset QUOTED_IDENTIFIER ONGO-- =============================================-- Author: Clear-- Description: 高性能分页--  =============================================Alter PROCEDURE [dbo].[Tag_Page_Name_Select]-- 传入最大显示纪录数和当前页码@MaxPageSize int,@PageNum int,-- 设置一个输出参数返回总纪录数供分页列表使用@Count int outputASBEGINSET NOCOUNT ON;DECLARE-- 定义排序名称参数@Name nvarchar(50),-- 定义游标位置@Cursor int-- 首先得到纪录总数Select @Count = count(tag_Name)FROM [viewdatabase0716].[dbo].[view_tag];-- 定义游标需要开始的位置Set @Cursor = @MaxPageSize*(@PageNum-1)+1-- 如果游标大于纪录总数将游标放到最后一页开始的位置IF @Cursor  @CountBEGIN-- 如果最后一页与最大每次纪录数相等,返回最后整页IF @Count % @MaxPageSize = 0BEGINIF @Cursor  @MaxPageSizeSet @Cursor = @Count - @MaxPageSize + 1ELSESet @Cursor = 1END-- 否则返回最后一页剩下的纪录ELSESet @Cursor = @Count - (@Count % @MaxPageSize) + 1END-- 将指针指到该页开始Set Rowcount @Cursor-- 得到纪录开始的位置Select @Name = tag_NameFROM [viewdatabase0716].[dbo].[view_tag]orDER BY tag_Name;-- 设置开始位置Set Rowcount @MaxPageSize-- 得到该页纪录Select * From [viewdatabase0716].[dbo].[view_tag]Where tag_Name = @Nameorder By tag_NameSet Rowcount 0END 

static 方法

小编们也足以有类措施,也正是声称为 static
的措施。类措施表示了类能够兑现的动作,当中的操作不关乎有些具体对象。若是三个主意注脚为
static,那么它不得不调用 static 的数目和办法,而不可能调用非 static
的多少和艺术。

事实上,在 static 方法中,将没有隐式传递的 thissuper
参数。大家一定无法援引归于对象的数额和艺术(那多亏我们想要的功用)。

汇总下边所说的,大家有如下事关:

澳门太阳集团 1

虚线表示不能够访谈。也等于说,类措施中,无法访谈对象的多少。

大家爱上例中定义的多少个 static 方法 getPopulation(),该格局重回
Human 类的 static 数据 population。大家试着调用它:

public class Test
{
    public static void main(String[] args)
    {
        System.out.println(Human.getPopulation());

        Human aPerson = new Human(160);
        System.out.println(aPerson.getPopulation());                     
    }
}

出口结果:

0
0

可将,类本人和类的对象都能调用 static 方法。


然后是分页控件(… 为简单的生成HTML代码方法卡塔尔(قطر‎:

目的方法更改类数据

咱俩看见,对象方法能够访问类数据。那是极其实用的概念。类的图景有十分大概率随着对象而发生变化。比如“人口”,它应当搭乘飞机二个指标的产生而充实
1。

咱俩得以在指标的章程中期维改正类的“人口”数据。大家下边在布局方法中拜访类数据成员。这里的结构方法是非
static 的情势,即对象的方法:

class Human
{   
    public Human(int h)
    {
        this.height = h;
        // 修改类数据
        Human.population = Human.population + 1;
    }

    public int getHeight()
    {
       return this.height;
    }

    public void growHeight(int h)
    {
        this.height = this.height + h;
    }

    public void breath()
    {
        System.out.println("hu...hu...");
    }

    private int height; 

    // 类方法
    public static int getPopulation()
    {
        return Human.population;
    }

    // 类数据成员
    private static int population;
    private static boolean is_mammal = true;
}


public class Test
{
    public static void main(String[] args)
    {
        Human aPerson = new Human(160);
        System.out.println(aPerson.getPopulation());                     
    }
}

输出结果:

1


using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Text;/// summary/// 扩展连接字符串/// /summarypublic class ExStringBuilder{private StringBuilder InsertString;private StringBuilder PageString;private int PrivatePageNum = 1;private int PrivateMaxPageSize = 25;private int PrivateMaxPages = 10;private int PrivateCount;private int PrivateAllPage;public ExStringBuilder(){InsertString = new StringBuilder("");}/// summary/// 得到生成的HTML/// /summarypublic string GetHtml{get{return InsertString.ToString();}}/// summary/// 得到生成的分页HTML/// /summarypublic string GetPageHtml{get{return PageString.ToString();}}/// summary/// 设置或获取目前页数/// /summarypublic int PageNum{get{return PrivatePageNum;}set{if (value = 1){PrivatePageNum = value;}}}/// summary/// 设置或获取最大分页数/// /summarypublic int MaxPageSize{get{return PrivateMaxPageSize;}set{if (value = 1){PrivateMaxPageSize = value;}}}/// summary/// 设置或获取每次显示最大页数/// /summarypublic int MaxPages{get{return PrivateMaxPages;}set{PrivateMaxPages = value;}}/// summary/// 设置或获取数据总数/// /summarypublic int DateCount{get{return PrivateCount;}set{PrivateCount = value;}}/// summary/// 获取数据总页数/// /summarypublic int AllPage{get{return PrivateAllPage;}}/// summary/// 初始化分页/// /summarypublic void Pagination(){PageString = new StringBuilder("");//得到总页数PrivateAllPage = (int)Math.Ceiling((decimal)PrivateCount / (decimal)PrivateMaxPageSize);//防止上标或下标越界if (PrivatePageNum  PrivateAllPage){PrivatePageNum = PrivateAllPage;}//滚动游标分页方式int LeftRange, RightRange, LeftStart, RightEnd;LeftRange = (PrivateMaxPages + 1) / 2-1;RightRange = (PrivateMaxPages + 1) / 2;if (PrivateMaxPages = PrivateAllPage){LeftStart = 1;RightEnd = PrivateAllPage;}else{if (PrivatePageNum = LeftRange){LeftStart = 1;RightEnd = LeftStart + PrivateMaxPages - 1;}else if (PrivateAllPage - PrivatePageNum  RightRange){RightEnd = PrivateAllPage;LeftStart = RightEnd - PrivateMaxPages + 1;}else{LeftStart = PrivatePageNum - LeftRange;RightEnd = PrivatePageNum + RightRange;}}//生成页码列表统计PageString.Append(...);StringBuilder PreviousString = new StringBuilder("");//如果在第一页if (PrivatePageNum  1){...}else{...}//如果在第一组分页if (PrivatePageNum  PrivateMaxPages){...}else{...}PageString.Append(PreviousString);//生成中间页  (int i = LeftStart; i = RightEnd; i++){//为当前页时if (i == PrivatePageNum){...}else{...}}StringBuilder LastString = new StringBuilder("");//如果在最后一页if (PrivatePageNum  PrivateAllPage){...}else{...}//如果在最后一组if ((PrivatePageNum + PrivateMaxPages)  PrivateAllPage){...}else{...}PageString.Append(LastString);}/// summary/// 生成Tag分类表格/// /summarypublic void TagTable(ExDataRow myExDataRow){InsertString.Append(...);} 

final

final 关键字的基本含义是: 这些数额,方法,类不可能被改成了。

常常来说品种的指标也得以有 final
关键字,它象征对象援用(reference)不能再被改善。即该援用只可以指向五个指标。不过,对象的剧情能够改换(相仿于C中的static指针)。大家将要那后介绍对象引用。

只要二个基本类型的数目既为 final,也是
static,那么它是只存款和储蓄了意气风发份的定值。那非常切合于积攒一些常量,比方圆周率。

调用方法:

//得到分页设置并放入SessionExRequest myExRequest = new ExRequest();myExRequest.PageSession("Tag_", new string[] { "page", "size" });//生成Tag分页ExStringBuilder Tag = new ExStringBuilder();//设置每次显示多少条纪录Tag.MaxPageSize = Convert.ToInt32(Session["Tag_size"]);//设置最多显示多少页码Tag.MaxPages = 9;//设置当前为第几页Tag.PageNum = Convert.ToInt32(Session["Tag_page"]);string[][] myNamenValue = new string[2][]{new string[]{"MaxPageSize","PageNum","Count"},new string[]{Tag.MaxPageSize.ToString(),Tag.PageNum.ToString()}};//调用存储过程DataTable myDataTable = mySQL.BatchGetDB("Tag_Page_Name_Select", myNamenValue, "Count");Tag.DateCount = (int)mySQL.OutputCommand.Parameters["@Count"].Value;Tag.Pagination();HeadPage.InnerHtml = FootPage.InnerHtml = Tag.GetPageHtml;for (int i = 0, j = myDataTable.Rows.Count; i  j; i++){Tag.TagTable(new ExDataRow(myDataTable.Rows));}TagBox.InnerHtml = Tag.GetHtml; 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图