当前位置:数据库 > SQLServer >>

C#中SQL传参的自动设置和赋值

引子:某年某日,公司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确实比较另类,看看实现方法,主要也是运用了反射,于是乎,我想何不用反射写个简单的类呢?实现起来应该不复杂的吧? 两个小时后,我交出了第一个版本,废话少说,看代码先:

 

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,