C 呼叫儲存過程

2021-07-03 21:06:50 字數 2454 閱讀 4281

這次專案的數量級在1000萬,所以需要對資料的操作進行優化,儲存過程可以大大減少資料通訊量,其他的優化倒不知道在**有優化的地方

首先要在sqlserver裡面新建儲存過程

右鍵新建即可

使用的命令是 create proc [your proc name]

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

如果不懂t-sql語句的話,建議先學習下t-sql語句,其實語法很簡單

create下面的變數是從c#裡面傳過來的變數,如果沒有的話,就不需要定義。注意這裡的變數名稱要和c#裡面的名稱相同

接下來在c#裡面呼叫過程

個人比較喜歡的c#裡運算元據庫的類有sqlcommand和sqldataadapter

msqlconnection.open();

sqlcommand sqlcmd = new sqlcommand("dbo.odinsert", msqlconnection);

sqlcmd.commandtype = commandtype.storedprocedure;//設定呼叫的型別為儲存過程

idictionaryenumerator en = hashinrecord.getenumerator();

while (en.movenext())

sqlcmd.executenonquery();

首先要定義parameters,然後加到sqlcmd裡面

如果用sqldataadapter的話

adapter.selectcommand.commandtype = commandtype.storedprocedure;    //這是最重要的
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());

其中sqldataadapter一般帶返回結果,所以一般在fill()方法裡面執行。如果要儲存結果集的話,就要在外部新建乙個dataset,如果只是執行的話就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,...