欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

asp.net安全、實用、簡單的大容量存儲過程分頁第1/2頁

 更新時間:2009年04月07日 23:26:48   作者:  
昨晚研究到2點多,對網(wǎng)絡(luò)上主流的分頁存儲過程大體看了一遍,但對安全以及如何使用很多文章都沒有過多的提及,而我要在這些文章的基礎(chǔ)上總結(jié)出一個比較實用的分頁存儲過程,方便大家在以后的項目中使用。
基本上我下面要講述的側(cè)重點是如何使用,因為其實分頁存儲過程網(wǎng)上很多,如果你懶得找,那么可以直接使用下面這個我經(jīng)過測試,并通過修改,網(wǎng)上評價都比較高的分頁存儲過程。

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

準(zhǔn)備工作:
1、直接使用一個DB庫,數(shù)據(jù)訪問層基類,用它返回一個dataset對象,使用的時候我們只需要類似下面的語句就可以返回一個dataset對象。
sosuo8.DBUtility.DbHelperSQL.RunProcedure("pagination",parameter,"userinfo");
pagination是我在網(wǎng)上找的存儲過程,我進行了修改的,主要是添加輸出總記錄數(shù)。這里總記錄數(shù)也特意說一下,一般我們都是使用類似下面的語句:
復(fù)制代碼 代碼如下:

sosuo8.DBUtility.DbHelperSQL.RunProcedure("pagination",parameter,"userinfo");

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

select count(*) from sosuo8data

這里我又要說兩句,網(wǎng)上有網(wǎng)友說使用count(某列),例如count(userName)會比count(*)快也是不對,如果找的列不對,那么并不會比count(*)快。而count(*)會自動幫我們查找可以實現(xiàn)最快統(tǒng)計的那列,而其實在使用中,一般就是我們的那個主鍵id,count(id)是最快的。
2、建立數(shù)據(jù)庫data_test,建立兩個表:
(1)、userinfo這個表用來放數(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ù)制代碼 代碼如下:

set identity_insert userinfo on -- 標(biāo)識可以插入自遞增列
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,'阿會楠','sosuo8.com',@date)
set @count=@count+1
set @date=@date+'00:00:01'--加一秒,避免重復(fù),否則會造成分頁不準(zhǔn)確的情況,排序的字段切忌不要出現(xiàn)過多重復(fù)值
end
set identity_insert userinfo off

如果你的電腦配置比較一般,千萬不要嘗試,否則可能會當(dāng)機;如果沒當(dāng)機,那耐心等下,插入這么多條記錄需要一點時間。
(2)tmp表用來存放無搜索條件時的總記錄數(shù)。這里我要說下,為什么需要一個表用來專門存放總記錄數(shù),總記錄數(shù)你可以在后臺每隔一段時間就去更新一次,把最新的總記錄數(shù)寫進去。否則的話,520W的記錄你每次都要用count(id)那么耗費的時間也不少。

建表的語句如下:
復(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ù),而不在存儲過程里面把分頁都算好。因為我們就將采用aspnetpager這個控件,這個控件我們只需要傳入3個值,函數(shù)定義如下:
復(fù)制代碼 代碼如下:

public DataSet GetList(int PageIndex, string strWhere,ref int rowCount)

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

相關(guān)文章

  • Web.config 和 App.config 的區(qū)別分析

    Web.config 和 App.config 的區(qū)別分析

    Web.config 和 App.config 的區(qū)別分析,需要的朋友可以參考一下
    2013-05-05
  • asp.net Hashtable 遍歷寫法

    asp.net Hashtable 遍歷寫法

    h為Hashtable
    2009-02-02
  • asp.net利用google的api做翻譯

    asp.net利用google的api做翻譯

    google提供了一組API可以給我們很方便的實現(xiàn)語言翻譯功能,對于我們(中國人)而言,常用的是中文與英文的互譯。
    2009-05-05
  • 在.Net中使用MongoDB的方法教程

    在.Net中使用MongoDB的方法教程

    最近在研究mongodb,在網(wǎng)上搜索發(fā)現(xiàn)針對.net 中使用mongodb的文章要么是早期的驅(qū)動版本,要么資料很少,所以寫個隨筆記錄一下,本文詳細的給大家介紹了在.Net中使用MongoDB的方法教程,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • ASP.NET搭配Ajax實現(xiàn)搜索提示功能

    ASP.NET搭配Ajax實現(xiàn)搜索提示功能

    為了更好的用戶體驗,不論是桌面軟件還是網(wǎng)站,在搜索查詢的輸入中都會加入提示功能,就像百度搜索一樣!今天筆者就ASP.NET編程介紹一下如何利用Ajax來實現(xiàn)搜索信息提示功能。
    2015-09-09
  • Entity?Framework管理一對二實體關(guān)系

    Entity?Framework管理一對二實體關(guān)系

    本文詳細講解了Entity?Framework管理一對二實體關(guān)系的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • 淺談ASP.NET的Postback 實例代碼

    淺談ASP.NET的Postback 實例代碼

    說道ASP.NET的Postback,就得說Web Page的生命周期,但是Web Page的生命周期卻不是三言兩語就能夠說得清楚的,所以在這里單純站的編程的角度,撇開Web Page 的生命周期淺談Postback。
    2009-08-08
  • ASP.Net MVC 布局頁、模板頁使用方法詳細介紹

    ASP.Net MVC 布局頁、模板頁使用方法詳細介紹

    這篇文章主要介紹了ASP.Net MVC 布局頁、模板頁使用方法詳細介紹,需要的朋友可以參考下
    2017-08-08
  • ASP.NET?Core中使用滑動窗口限流的問題及場景分析

    ASP.NET?Core中使用滑動窗口限流的問題及場景分析

    這篇文章主要介紹了ASP.NET?Core中使用滑動窗口限流的問題,主要介紹服務(wù)限流場景中的應(yīng)用,如何使用滑動窗口來解決這個問題,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,需要的朋友參考下吧
    2021-12-12
  • ASP.NET MVC5使用MiniProfiler監(jiān)控MVC性能

    ASP.NET MVC5使用MiniProfiler監(jiān)控MVC性能

    這篇文章主要為大家詳細介紹了ASP.NET MVC5使用MiniProfiler監(jiān)控MVC性能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評論