這次專案的數量級在1000萬,所以需要對資料的操作進行優化,儲存過程可以大大減少資料通訊量,其他的優化倒不知道在**有優化的地方
首先要在sqlserver裡面新建儲存過程
右鍵新建即可
使用的命令是 create proc [your proc name]
如果不懂t-sql語句的話,建議先學習下t-sql語句,其實語法很簡單create proc [dbo].[doinsert]
@in_out varchar(25),
@number int,
@per varchar(10),
@time datetime,
@isweekday varchar(5),
@table varchar(20)
as begin
declare @sql nvarchar(255)
set @sql = 'insert into '+ @table + '(dtoo,number,per,caltime,isweekday) values(@in_out,@number,@per,@time,@isweekday)'
execute sp_executesql @sql,n'@in_out varchar(25),
@number int,
@per varchar(10),
@time datetime,
@isweekday varchar(5)',
@in_out = @in_out,@number = @number , @per = @per , @time = @time , @isweekday = @isweekday;
end
create下面的變數是從c#裡面傳過來的變數,如果沒有的話,就不需要定義。注意這裡的變數名稱要和c#裡面的名稱相同
接下來在c#裡面呼叫過程
個人比較喜歡的c#裡運算元據庫的類有sqlcommand和sqldataadapter
首先要定義parameters,然後加到sqlcmd裡面msqlconnection.open();
sqlcommand sqlcmd = new sqlcommand("dbo.odinsert", msqlconnection);
sqlcmd.commandtype = commandtype.storedprocedure;//設定呼叫的型別為儲存過程
idictionaryenumerator en = hashinrecord.getenumerator();
while (en.movenext())
sqlcmd.executenonquery();
如果用sqldataadapter的話
adapter.selectcommand.commandtype = commandtype.storedprocedure; //這是最重要的
其中sqldataadapter一般帶返回結果,所以一般在fill()方法裡面執行。如果要儲存結果集的話,就要在外部新建乙個dataset,如果只是執行的話就new乙個dataset臨時用就行了adapter.selectcommand.parameters.add("@in", sqldbtype.varchar, 10).value = inname;
adapter.selectcommand.parameters.add("@out", sqldbtype.varchar, 10).value = outname;
adapter.selectcommand.parameters.add("@start",sqldbtype.datetime).value = start;
adapter.selectcommand.parameters.add("@end", sqldbtype.datetime).value = end;
sqlparameter result = new sqlparameter("@return value", sqldbtype.int);
result.direction = parameterdirection.returnvalue;
adapter.selectcommand.parameters.add(result);
adapter.fill(new dataset());
在這個方法裡面用到了paramters的direction,一般都預設為input,return value為在儲存過程裡面return的變數
之後想接收這個值的話,在執行完儲存過程後,取出這個變數的值即可
int number = convert.toint32(result.value.tostring());
對於select語句返回的結果集還沒有嘗試過,不知道adapter.fill()有沒有效果,一般這個方法用在sql語句的操作裡面。 C 呼叫儲存過程
string sconnectionstring server local sqlexpress database forum trusted connection true 04 using sqlconnection conn new sqlconnection sconnectionstrin...
c 呼叫儲存過程
public partial class proceduretest system.web.ui.page 只返回單一記錄集的儲存過程getuseraccount publicvoid rungetuseraccount 沒有輸入輸出的儲存過程inuseraccount publicvoid run...
c 呼叫儲存過程
一 下面講c 如何呼叫寫好的儲存過程,下面是對資料操作封裝幾個函式 執行對錶的增刪改操作的sql語句 public static int executecommand string text public static int execstoredprocedure string procname,...