手机版

ASP.NET安全、实用和简单的海量存储过程分页第1/2页

时间:2021-11-25 来源:互联网 编辑:宝哥软件园 浏览:

基本上我会重点介绍如何使用,因为其实互联网上有很多分页存储过程。如果懒得找,可以直接使用下面我在网上测试修改评估过的分页存储过程。这种分页的主要优点如下:1 .大容量下的数据分页,我的测试数据是520W。2.我结合了aspnetpager控件,使它更方便使用。3.为了结构清晰,它有三个实用的楼层。4、安全,可以放心使用。你可以放心,SQL注入的问题就在这里。网上有一篇文章说,只要存储过程和sql拼接,就有sql注入的问题,注入情况直接在sql查询分析器中测试。其实是不对的。使用存储过程和参数化提交语句没有sql注入的问题。因为当它进入数据库时会有一个替换过程。准备:1。直接使用数据库库,数据访问层的基类,并使用它返回数据集对象。当使用它时,我们只需要下面的语句来返回一个数据集对象。复制代码如下: sosu 8 . db utility . dbhelpersql . run procedure(' paging ',参数,' user info ');分页是我在网上找到的一个存储过程,我修改它主要是为了增加输出记录的总数。这里还特别提到了记录总数。通常,我们都使用如下语句:复制代码如下:从sosuo 8数据中选择count(*)。在这里,我想多说两句。网上有网友说用count(某一列),比如count(userName),会比count(*)快,这也是不对的。如果您找到的列是错误的,它不会比count (*)快。而count(*)会自动帮助我们找到能够实现最快统计的列。其实在使用中,通常是我们的主键ID,计数(ID)最快。2.建立数据库data_test和两个表:(1) userinfo,用于放数据。复制代码如下:createtable [dbo]。[userinfo] ([id] [int]标识(1,1)不为空,[username] [nchar] (50)将Chinese _ PRC _ ci _整理为空。[user webname][nchar](50)COLLATE Chinese _ PRC _ CI _ AS NULL,[create date][datetime]NULL CONSTRAINT[DF _ user info _ create date]DEFAULT(getdate()),A constraint [PK _ userinfo]主键clustered ([id] ASC)在[primary] id上(ignore _ dup _ key=off) on [primary])是自增的,是聚合索引。好吗?开始向数据库中添加520W记录:复制代码如下:-by Ahui Nan 2009-4-5 set identity _ insert user info on-该标识可插入自增列declare @ count int declare @ date datetime set @ count=1s。et @ date=' 2009-4-5 00:00:00 '而@ count=5200000开始插入到userinfo (id,username,userwebname,create date)值(@ count,' ah huinan ',soso 8.com ',@ date)设置@[email protected]1 set @[email protected]' 00:00000001 '-增加一秒以避免重复,否则会导致分页不准确,排序后的字段应该如果你的电脑配置比较一般,请不要。如果不崩溃,耐心等待。插入这么多记录需要一些时间。(2)tmp表用于存储没有搜索条件时的记录总数。在这里,我想谈谈为什么需要一个表来存储总记录。您可以在后台定期更新总记录,并写入最新的总记录。不然每次都要用count(id)来记录520W,要花很多时间。

创建表的语句如下:复制代码如下:创建表[dbo]。[tmp] ([id] [int]标识(1,1)不为null,[rowcount _ tmp] [int] null。[table _ tmp][varchar](255)COLLATE Chinese _ PRC _ CI _ AS NULL,Constraint [PK _ tmp]主键clustered([ID]ASC)with(ignore _ dup _ key=off)on[primary])on[primary]在这里,我不得不提到为什么我们只需要获取表中的总行数,而不是在存储过程中很好地计算分页。因为我们将使用aspnetpager作为控件,所以只需要为这个控件传入3个值,函数定义如下:复制的代码如下: public dataset get list(Int page index,string strhere,Int rowcount)复制代码如下:PageIndex: current page,对应aspnetpager: search条件中的CurrentPageIndex strWhere,所以本文不重点讨论搜索部分。因此,字符串。代码中使用了Empty,大容量下的数据搜索需要在另一篇文章中说明。RowCount:存储过程返回的记录总数。阅读下一页的全文。

版权声明:ASP.NET安全、实用和简单的海量存储过程分页第1/2页是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。