一、分頁儲存過程
----------使用儲存過程編寫乙個分頁查詢-----------------------二、ado呼叫儲存過程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
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...