asp.net 調用存儲過程(帶有輸入,輸出參數 ,思路)二

根據返回值類型的不一樣,咱們能夠將存儲過程分爲三類:返回記錄集的存儲過程, 返回數值的存儲過程(也能夠稱爲標量存儲過程),以及行爲存儲過程。

(1)執行一個沒有參數的存儲過程的代碼以下:

SqlConnection conn=new SqlConnection(「connectionString」);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "NameOfProcedure";
da.SelectCommand.CommandType = CommandType.StoredProcedure;
而後只要選擇適當的方式執行此處過程,用於不一樣的目的便可。

  (2)執行一個有參數的存儲過程的代碼以下(咱們能夠將調用存儲過程的函數聲明爲ExeProcedure(string inputdate)):

SqlConnection conn=new SqlConnection(「connectionString」);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "NameOfProcedure";
da.SelectCommand.CommandType = CommandType.StoredProcedure;
(以上代碼相同,如下爲要添加的代碼)
param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Input;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);
  這樣就添加了一個輸入參數。若須要添加輸出參數:

param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Output;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);
  若要得到參儲過程的返回值:

param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.ReturnValue;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);
  從上面的代碼咱們能夠看出,當存儲過程比較多或者存儲過程的參數比較多時,這種方法會大大影響開發的速度;另一方面,若是項目比較大,那麼這些用於數據庫邏輯的函數在之後的維護中也是一個很大的負擔。那麼,有沒有一種改進的方法能夠解決這個問題呢?想到在執行沒有參數的存儲過程時只須要傳入一個存儲過程的名字就能夠調用相應的存儲過程,並且在SqlServer數據庫中咱們能夠直接在查詢分析器中敲入「存儲過程名(參數列表)」樣的字符串就能夠執行存儲過程,那麼,是否能夠把這種思想應用到應用程序中呢?

  因而在編譯器中鍵入相應代碼。這些代碼是在調用不帶參數的存儲過程的代碼的基礎上改的。具體代碼以下:

SqlConnection conn=new SqlConnection(「connectionString」);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "NameOfProcedure(’para1’,’para2’,para3)";
da.SelectCommand.CommandType = CommandType.StoredProcedure;
  爲了使代碼更具備表明性,要調用的存儲過程的第一個和第二個參數都爲字符串類型,第三個參數爲整型。執行之後發現,徹底能夠達到預期的效果!

  兩種調用方法的比較
  
  經過比較咱們能夠看到,第二種方法具備一個很明顯的優勢,那就是能夠提升開發速度,節省開發時間,並且代碼容易維護,在必定程度上也減小了系統大小。可是,因爲對存儲過程參數的處理比較籠統,若是要獲取輸出參數或者獲得存儲過程的返回值,這種方法就不能知足須要了。雖然如此,可是,這種方法畢竟可讓開發人員少些很大一部分的代碼。若是不須要獲取輸出參數和返回值,那麼幾乎能夠作到「一勞永逸」。所以在實際的程序開發中,這種方法仍是具備必定的實用價值的。


數據庫

相關文章
相關標籤/搜索