ADO呼叫分頁查詢儲存過程

2022-02-24 14:28:11 字數 3692 閱讀 9676

一、分頁儲存過程

----------使用儲存過程編寫乙個分頁查詢-----------------------

set nocount off --關閉sqlserver訊息

--set nocount on --開啟sqlserver訊息

gocreate proc usp_getmystudentsdatabypage

--輸入引數

@pagesize

int=7,--每頁記錄條數

@pageindex

int=1,--當前要檢視第幾頁的記錄

--輸出引數

@recordcount

int output,--總的記錄的條數

@pagecount

int output --總的頁數

asbegin

--1.編寫查詢語句,把使用者要的資料查詢出來

select

t.fid,

t.fname,

t.fage,

t.fgender,

t.fmath,

t.fclassid,

t.fbirthday

from (select *,rn=row_number() over(order by fid asc) from mystudent) as

twhere t.rn between (@pageindex-1)*@pagesize+1 and @pagesize*@pageindex

--2.計算總的記錄條數

set @recordcount=(select count(*) from

mystudent)

--3.計算總頁數

set @pagecount=ceiling(@recordcount*1.0/@pagesize) --乘以1.0轉成flot型, 然後celling 「進一法」取值

end

--呼叫前定義輸出引數

declare @rc

int,@pc int

exec usp_getmystudentsdatabypage @pagesize=7,@pageindex=4, @recordcount=@rc output,@pagecount=@pc output

print @rc

print @pc

二、ado呼叫儲存過程

using

system;

using

system.collections.generic;

using

system.componentmodel;

using

system.data;

using

system.drawing;

using

system.linq;

using

system.text;

using

system.windows.forms;

using

system.data.sqlclient;

namespace

_02通過ado.net呼叫儲存過程

private

int pageindex = 1;//

當前要檢視的頁碼

private

int pagesize = 7;//

每頁顯示的記錄條數

private

int pagecount;//

總頁數private

int recordcount;//

總條數

//窗體載入的時候顯示第一頁的資料

private

void form1_load(object

sender, eventargs e)

private

void

loaddata()

,//new sqlparameter("@pageindex",sqldbtype.int),

//new sqlparameter("@recordcount",sqldbtype.int),

//new sqlparameter("@pagecount",sqldbtype.int)

//};

////

開啟連線

////

執行

//using(sqldatareader reader=cmd.executereader())

//

//pms[2].value

//}//}

#endregion

//dataadapter方式

datatable dt = new

datatable();

using (sqldataadapter adapter = new sqldataadapter("

usp_getmystudentsdatabypage

", constr))

,new sqlparameter("

@pageindex

",sqldbtype.int),

new sqlparameter("

@recordcount

",sqldbtype.int),

new sqlparameter("

@pagecount

",sqldbtype.int)

};adapter.selectcommand.parameters.addrange(pms);

adapter.fill(dt);

//獲取輸出引數並且賦值給label

label1.text = "

總條數:

" + pms[2

].value.tostring();

label2.text = "

總頁數:

" + pms[3

].value.tostring();

label3.text = "

當前頁:

" +pageindex;

//資料繫結

this.datagridview1.datasource =dt;}}

//private

void button2_click(object

sender, eventargs e)

//private

void button1_click(object

sender, eventargs e)}}

效果圖:

三.通過ado.net呼叫儲存過程與呼叫帶引數的sql語句的區別。

1>把sql語句變成了儲存過程名稱

2>設定sqlcommand物件的commandtype為commandtype.storedprocedure

這步本質 就是在 儲存過程名稱前面加了個「 exec  」

3>根據儲存過程的引數來設定sqlcommand物件的引數。

4>如果有輸出引數需要設定輸出引數的direction屬性為:direction=parameterdirection.output

四.如果是通過呼叫command物件的executereader()方法來執行的該儲存過程,那麼要想獲取輸出引數,必須得等到關閉reader物件後,才能獲取輸出引數。

ADO呼叫儲存過程

usingsystem usingsystem.collections.generic usingsystem.componentmodel usingsystem.data usingsystem.drawing usingsystem.linq usingsystem.text usingsys...

分頁儲存過程呼叫

獲得資料集 表名 需要返回的列,預設為全部 排序欄位名 頁尺寸 頁碼 返回記錄總數,非 0 值則返回 設定排序型別,非 asc 值則降序 查詢條件 注意 不要加 where 資料集 public static sqldatareader get datareader string tblname,s...

ADO呼叫儲存過程例項講解

1 直接有返回值的儲存過程 public string getprojectcode 或者直接以sql的形式呼叫 public string getprojectcode 呼叫無引數的儲存過程,直接呼叫儲存過程的返回值 public static datatable pro categorys pr...