【乱写代码坑人系列】小插曲(一)将类的所有属性添加为SqlCommand的参数

小插曲(一)将类的所有属性添加为SqlCommand的参数

  在使用SqlCommand 执行存储过程时,如果存储过程需要参数,就必须将每个参数都输进去,虽然说可以使用AddWithValue 方法,但参数多时仍旧有些麻烦。

  在需要将类的所有属性作为参数时,可以通过反射获取这个类所有的属性和值,并直接添加到参数中。

  不过需要注意的是,必须保证类的属性名和参数名相同(不区分大小写),顺序无所谓。

  

1         private void SetSqlParameters<T>(SqlCommand cmd, T model)
2             where T : class
3         {
4             foreach (PropertyInfo prop in
5                 model.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
6             {
7                 cmd.Parameters.AddWithValue("@" + prop.Name, prop.GetValue(model, null));
8             }
9         }

  可以看出,这个函数中使用了一个循环来遍历所有属性,并使用GetValue 方法来获得相应的值,之后只需用一句话就可以将所有的属性加入参数列表中。

 1         public Building FindBuilding(Building building)
 2         {
 3             using (SqlConnection con = new SqlConnection(AppConnectionString))
 4             {
 5                 SqlCommand cmd = new SqlCommand("FindBuilding", con);
 6                 cmd.CommandType = CommandType.StoredProcedure;
 7                 SetSqlParameters<Building>(cmd, building);
 8
 9                 con.Open();
10                 SqlDataReader reader = cmd.ExecuteReader();
11                 if (reader.Read())
12                     return new Building
13                         (
14                             (string)reader["BldgName"],
15                             (int)reader["RoomNum"]
16                         );
17
18                 return null;
19             }
20         }
时间: 2025-01-14 10:41:41

【乱写代码坑人系列】小插曲(一)将类的所有属性添加为SqlCommand的参数的相关文章

【乱写代码坑人系列】ZJUT数据库大型实验 - 学生管理系统(二):项目规划

学生管理系统(二)项目规划 学生管理系统(一)建立项目 好吧这部分应该放在第一的,但是我忘了(逃.其实也差不多啦,反正上一篇也没说什么啊哈哈. 先说项目要求.项目要求的是建立一个管理系统,用来对本地的数据库进行增删查改,把.mdf 文件直接拿来改会被老师打的,所以还是要有一个图形界面. 图形界面要有几个页面:登录,主窗口,学院.老师.学生.课程.成绩的管理,要能看到详细信息,能够批量删除什么的.为了装逼可以考虑加入与Office的连接,不过这个是后话,做好基础功能再玩. 数据库要这么几个表:学院

微信商城开发系列第四篇 不写代码玩转微信公众号

本系列文章属作者原创文章,请尊重作者的劳动成果,转载请注明出处:walkingmanc的专栏 , 谢谢! 同时欢迎大家加入微信商城开发QQ群:364072602,共同探讨进步.  为什么叫不写代码玩转微信公众号呢? 我们大家都知道,微信公众号有两种模式,一种是编辑模式,一种是开发模式.所谓的不写代码玩转微信公众号,其实就是在编辑模式下如何使用微信公众号的意思,呵呵,是不是有种恍然大悟的感觉. 其实,如果你关注的微信公众号比较多的话,你会发现有很多有名的公众号,它们没有菜单,每天都会发布4到5篇文

我要好offer之 str/mem系列手写代码

1. str*系列手写代码 a. 一定要注意末尾'\0'的处理,切记切记 b. 一定要对输入做有效性判断,多用断言就是了 int Strlen(const char* str) { assert(str != NULL); const char* tmp = str; while (*tmp != '\0') { ++tmp; } return tmp - str; } char* Strcpy(char* dst, const char* src) { assert(dst != NULL &

PHP对大小写敏感问题的处理比较乱,写代码时可能偶尔出问题,所以这里总结一下。以便用到的出现错误

推荐大家始终坚持“大小写敏感”,遵循统一的代码规范. 1. 变量名区分大小写 1 <?php 2 $abc = 'abcd'; 3 echo $abc; //输出 'abcd' 4 echo $aBc; //无输出 5 echo $ABC; //无输出 2. 常量名默认区分大小写,通常都写为大写 (但没找到能改变这个默认的配置项,求解) 1 <?php 2 define("ABC","Hello World"); 3 echo ABC; //输出 Hel

高效程序员系列(保持写代码的动力)

话不多说,直入正题. 做任何事情都需要动力,只是对于程序员来说,拥有写代码的动力至关重要.程序员不同于会计.出纳等,这些职业所做的事情基本上都是重复的,就像平坦大路上行驶的车辆,并不需要提供很大的动力就能保持前进.程序员所做的事情恰像上坡路上的车辆,需要提供较大的且持续的动力才能保持继续前进.如果在开发一个项目的过程中,工程师不幸失去了动力,多半情况下项目就会半途而废,及时侥幸完成了,那么项目的完成质量值得担忧. 如何才能够在开发的过程中获得持续的动力呢? 程序员在开发的过程中,会遇到各种问题,

Python最好IDE:Pycharm使用小技巧总结,让你写代码更为舒适

1.pycharm的设置 一般我们第一次使用会对pycharm进行一些设置,这个根据个人需要调整.下面就我自己的做的设置进行一些说明: 从file下的setting进入设置,如下图所示: Python学习资料或者需要代码.视频加Python学习群:960410445 然后我们进入到设置界面,首先我们可以设置界面的风格和工具栏字体大小,如红线所示 接下来我们一般会设置写代码时的字体风格,选择合适的字体和大小以及间隔,有利于编写程序时的心情舒畅,写起来一溜溜的... 接下来我们需要指定我们的编码形式

OSChina 周二乱弹 —— 日写代码三千行,不辞长做IT人

星期二了,各位OSCer 大家壕!昨天脚趾头被砸了一下,去医院,大夫说:「你去做个脑电图吧.」本人极为不解:「我是脚趾头砸了,又不是头被砸,做啥脑电图啊?」 大夫看了我一眼,语重心长地对我说:「你的脑子要是反应灵敏,怎么会被砸呢? 我仔细想了想,还是不做脑电图了,脑子要是治好了以后还怎么写乱弹. @xmind:如果你想写程序,那就去当程序猿喽,唉,一如程序深如如海 @软件达人:我就是一苦逼的程序猿 @霡霂:上辈子做了什么坏事,让我这辈子当程序员!! 不干程序猿,也可以去卖烧烤! @任雲:日写代码

关爱码农成长:关于写代码二三事

工作这么多年以来,一直从事软件相关领域,即使担任主管职务,也一直对技术充满热情.写代码写了这么多年,多少有些体会.我把自己对写代码这份工作的心得写下来,希望能给从事相关领域或有志于写代码的人参考. 一.你适合当程序员吗? 程序员,也叫软件工程师.程序设计师,我觉得「程序员」三个字简洁有力,是一种身份的象征. 如果你正从事这份工作,恭喜你!这是个热门行业,在可预见的将来,也不会消失.不过也别高兴太早,这一行的技术汰旧换新非常快,必须不断努力学习才行. 一点天赋 打开一个空白文档,必须创造出代码.与

【转载】-如何写代码-编程智慧

原文地址:http://www.yinwang.org/blog-cn/2015/11/21/programming-philosophy 编程是一种创造性的工作,是一门艺术.精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的"智慧",并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋.然而由于软件行业喜欢标新立异,喜欢把简单的事情搞复杂,我希望这些文字能给迷惑中的人们指出一些正确的方向,让他们少走一些弯路,基本做到一分耕耘一分收获. 反复推敲代码 既然"天才是百分