這個(gè)分頁主要優(yōu)點(diǎn)如下: 1、大容量下的數(shù)據(jù)分頁,我 " /> 国产在线视频网,精品视频网,少妇人妻一级a毛片

四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

asp.net安全、實(shí)用、簡(jiǎn)單的大容量存儲(chǔ)過程分頁第1/2頁

基本上我下面要講述的側(cè)重點(diǎn)是如何使用,因?yàn)槠鋵?shí)分頁存儲(chǔ)過程網(wǎng)上很多,如果你懶得找,那么可以直接使用下面這個(gè)我經(jīng)過測(cè)試,并通過修改,網(wǎng)上評(píng)價(jià)都比較高的分頁存儲(chǔ)過程。

這個(gè)分頁主要優(yōu)點(diǎn)如下:
1、大容量下的數(shù)據(jù)分頁,我的測(cè)試數(shù)據(jù)是520W。
2、我結(jié)合ASPNETpager控件,使得使用起來更加方便。
3、為了結(jié)構(gòu)清晰,實(shí)用3層。
4、安全,你就放心的用吧。SQL注入的問題在這里你可以放心了。網(wǎng)上有文章說只要存儲(chǔ)過程是用sql拼接的就存在sql注入的問題,并且直接在sql查詢分析器中測(cè)試了注入的情況。其實(shí)是不對(duì)的,采用存儲(chǔ)過程和參數(shù)化的提交語句并沒有sql注入的問題。因?yàn)樗M(jìn)數(shù)據(jù)庫的時(shí)候會(huì)有替換的過程。

準(zhǔn)備工作:
1、直接使用一個(gè)DB庫,數(shù)據(jù)訪問層基類,用它返回一個(gè)dataset對(duì)象,使用的時(shí)候我們只需要類似下面的語句就可以返回一個(gè)dataset對(duì)象。
復(fù)制代碼 代碼如下:
sosuo8.DBUtility.DbHelperSQL.RunProcedure("pagination",parameter,"userinfo");

pagination是我在網(wǎng)上找的存儲(chǔ)過程,我進(jìn)行了修改的,主要是添加輸出總記錄數(shù)。這里總記錄數(shù)也特意說一下,一般我們都是使用類似下面的語句:
復(fù)制代碼 代碼如下:
select count(*) from sosuo8data

這里我又要說兩句,網(wǎng)上有網(wǎng)友說使用count(某列),例如count(userName)會(huì)比count(*)快也是不對(duì),如果找的列不對(duì),那么并不會(huì)比count(*)快。而count(*)會(huì)自動(dòng)幫我們查找可以實(shí)現(xiàn)最快統(tǒng)計(jì)的那列,而其實(shí)在使用中,一般就是我們的那個(gè)主鍵id,count(id)是最快的。

2、建立數(shù)據(jù)庫data_test,建立兩個(gè)表:
(1)、userinfo這個(gè)表用來放數(shù)據(jù)。
復(fù)制代碼 代碼如下:
CREATE TABLE [dbo].[userinfo](
[id] [int] IDENTITY(1,1) NOT NULL,
[userName] [nchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[userWebName] [nchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[createDate] [datetime] NULL CONSTRAINT [DF_userinfo_createDate] DEFAULT (getdate()),
CONSTRAINT [PK_userinfo] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

id是自遞增,且是聚合索引。OK?開始往數(shù)據(jù)庫中添加520W條記錄:
復(fù)制代碼 代碼如下:
--by 阿會(huì)楠 2009-4-5
set identity_insert userinfo on -- 標(biāo)識(shí)可以插入自遞增列
declare @count int
declare @date datetime
set @count=1
set @date = '2009-4-5 00:00:00'
while @count<=5200000
begin
insert into userinfo(id,userName,userWebName,createDate) values(@count,'阿會(huì)楠','sosuo8.com',@date)
set @count=@count+1
set @date=@date+'00:00:01'--加一秒,避免重復(fù),否則會(huì)造成分頁不準(zhǔn)確的情況,排序的字段切忌不要出現(xiàn)過多重復(fù)值
end
set identity_insert userinfo off

如果你的電腦配置比較一般,千萬不要嘗試,否則可能會(huì)當(dāng)機(jī);如果沒當(dāng)機(jī),那耐心等下,插入這么多條記錄需要一點(diǎn)時(shí)間。

(2)tmp表用來存放無搜索條件時(shí)的總記錄數(shù)。這里我要說下,為什么需要一個(gè)表用來專門存放總記錄數(shù),總記錄數(shù)你可以在后臺(tái)每隔一段時(shí)間就去更新一次,把最新的總記錄數(shù)寫進(jìn)去。否則的話,520W的記錄你每次都要用count(id)那么耗費(fèi)的時(shí)間也不少。

建表的語句如下:
復(fù)制代碼 代碼如下:
CREATE TABLE [dbo].[tmp](
[id] [int] IDENTITY(1,1) NOT NULL,
[rowCount_tmp] [int] NULL,
[table_tmp] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL,
CONSTRAINT [PK_tmp] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

這里不得不提一下,為什么只要取得表的行總記錄數(shù),而不在存儲(chǔ)過程里面把分頁都算好。因?yàn)槲覀兙蛯⒉捎?a href=/itjie/ASPjishu/ target=_blank class=infotextkey>ASPNETpager這個(gè)控件,這個(gè)控件我們只需要傳入3個(gè)值,函數(shù)定義如下:
復(fù)制代碼 代碼如下:
public DataSet GetList(int PageIndex, string strWhere,ref int rowCount)

復(fù)制代碼 代碼如下:
PageIndex:當(dāng)前頁,對(duì)應(yīng)ASPNETpager中的CurrentPageIndex
strWhere:搜索的條件,這篇文章將不重點(diǎn)講搜索部分。所以代碼中用string.Empty,大容量下的數(shù)據(jù)搜索那需要另寫一篇文章來說明。
rowCount:總記錄數(shù),由存儲(chǔ)過程重新返回。

AspNet技術(shù)asp.net安全、實(shí)用、簡(jiǎn)單的大容量存儲(chǔ)過程分頁第1/2頁,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 《欢·爱》郭晓东| 山西影视频道| 第一财经今日股市直播间在线直播| 隐藏的歌手中国版全集| 外出韩版| 我们的日子演员表| 德兰| 三年级上册修改病句专项训练| 秀人网周妍希| 内蒙古电视台节目表| 《新亮剑》电视剧| 任喜宝| 抖音下载| 最新电影免费观看| 陈烨个人资料简介| 闵度允李采潭| 生物选择性必修三| 鲍鱼视频在线观看| 圣洁四人行| 电影《三体》| 电影《来的都是客》| 初音未来头像| 尹丽川| 桥梁工程施工方案| i性感美女视频| 少女戏春潮| 小野寺律| 原来琪琪电影| 小学五年级下册数学期中试卷| 全能住宅改造王| 读书笔记经典常谈| 汤梦佳| 《潜艇行动》免费观看| 我的公主| 曹查理电影大全免费观看| 彭丹最惊艳三部电影在线观看| 乱世佳人电视剧免费观看完整版 | 盗墓笔记重启之极海听雷第二季| 黑水电影| 李慧慧| 极寒之城剧情详细介绍|