程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中SQL傳參的自動設置和賦值

C#中SQL傳參的自動設置和賦值

編輯:C#入門知識

引子:某年某日,公司Web程序被注入,導致數據庫一塌糊塗。CIO大怒,要求以後所有數據庫的交互行為都只能用SP,於是乎,即使是沒有任何參數的一條查詢語句也必須去到DB中加一條SP...

  項目實例:新入手一個項目,業務流程比較復雜,數據庫交互很多,一條條的SP寫的煞是煩人,尤其是在DAL中設置Command的Parameters,繁瑣而又費眼睛,寫多了很容易出錯,因為不僅僅要考慮參數的個數,而且要考慮傳的值阿對,值的類型阿對,對於Update之類的動作尤其煩人,一個Table,幾十個字段,一個個寫進去實在不是個簡單的事情。這一塊的典型代碼如下:

\\典型設置SQL參數 
private readonly string _mConnectionString = ConstParameter.ConnectionString; //獲得ConnectionString,ConstParameter是用來根據Web.Config來獲取對應開發環境的String
var conn = new SqlConnection(_mConnectionString); //New一個Connection
cmd = conn.CreateCommand(); //New一個Command
cmd.CommandType = CommandType.StoredProcedure; //設置 Command 類型
cmd.CommandText = “Store Procedure Name”; //設置 SP Name//以下是本文要解決的主要代碼段 .....
cmd.Parameters.Add(new SqlParameter("@Para1" , SqlDbType"));
cmd.Parameters["@Para1"].Value = Para1Value;
cmd.Parameters.Add(new SqlParameter("@Para2" , SqlDbType"));
cmd.Parameters["@Para2"].Value = Para2Value;
cmd.Parameters.Add(new SqlParameter("@Para3" , SqlDbType"));
cmd.Parameters["@Para3"].Value = Para3Value;
.....

 

  過程:很痛苦的很煎熬的一條條的SP寫完了,調試通過,進入UAT的階段,我也相對輕松了。逛逛博客園,偶然看到一篇博文  Attribute在.NET編程中的應用(三) ,發現和我遇到的情況基本一樣,完整的看完了,感覺用Attribute確實比較另類,看看實現方法,主要也是運用了反射,於是乎,我想何不用反射寫個簡單的類呢?實現起來應該不復雜的吧? 兩個小時後,我交出了第一個版本,廢話少說,看代碼先:

 

\\首先定義一個實體類
    public class ModelTestEvents
{
public int TestEventID { get; set; }
public string EpisodeStatus { get; set; }
public string SerialNumber { get;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved