使用儲存的優點
1.執行更快。直接寫sql指令碼會有個解析編譯的過程。
2.修改方便。當業務改變時,只需要改儲存過程,不需要修改c#**
3.傳遞sql指令碼資料相對更小
缺點:1.使用儲存過程,資料庫移植性差
2.把業務放到了儲存過程裡,相當於把處理業務的壓力放到了資料庫裡面。
儲存過程的指令碼:
--分頁原理:越過多少條,取多少條
--建立乙個儲存過程
create
proc
p_loadpagedata
--引數
@pageindex
int,
@pagesize
int,
@total
intout
asselect
top(@pagesize) *
from qunlist where id notin(
select
top((@pageindex
-1)*
@pagesize) id from qunlist order
byid
)order
byid
select
@total
=count('
a') from
qunlist
select
@total
--執行儲存過程
declare
@total
intexec p_loadpagedata 2,5,@total
outselect
@total
c#中**
//如果用了輸出引數,那麼就用sqldataadapter就可以了,用sqldatareader會拿不到輸出引數
string connstr = configurationmanager.connectionstrings["
connstr
"].connectionstring;
//建立乙個dateset,用來儲存查詢出的資料
//可以把dataset比作資料庫;把dataset.table比作資料庫中的表
dataset ds=new
dataset();
//設定輸出引數
sqlparameter totalparameter=new sqlparameter("
@total
",sqldbtype.int);
totalparameter.direction =parameterdirection.output;
using (sqlconnection conn = new
sqlconnection(connstr))}//
取得輸出引數的值
int total = (int
) totalparameter.value;
var table = ds.tables[0];
C 執行儲存過程
1 建立儲存過程 其中返回乙個值,統計表中符合條件資料數量 create procedure sp test name varchar 10 查詢條件 count int output 返回值 asbegin select count count from test where name name ...
C 執行儲存過程
閒話不多說,直接上 sql通用類 public class sqlhelper sqldataadapter sda new sqldataadapter sqlcmd sda.fill responseds catch exception e n 異常原因 n 異常詳細資訊 return resp...
C 如何執行儲存過程
以oracle為例,其它資料庫僅改變資料庫物件就可以。下面是帶引數的,不帶引數的話paramete為null即可。引數對應 public static int uploadstartclosesoftinfo string args return sdprovider.runprocedure 儲存...