// 修改学员信息的方法
public bool ModifyStudent(MODEL.Students model)
{
// 利用反映获取类对所有属性,用来动态生成SQL语句 StringBuilder sbSql = new StringBuilder("update Students set "); // 先获得model 的Type类型
Type modeType = model.GetType(); // 通过Type类型得到它所有的公开属性
PropertyInfo[] pros = modeType.GetProperties(); List<SqlParameter> paras = new List<SqlParameter>();
foreach (PropertyInfo pi in pros)
{
  // 如果不是主键则追加sql字符串
  if (!pi.Name.Equals("SID"))
  {
  // 判断属性值是否为空
  f (pi.GetValue(model, null) != null && !pi.GetValue(model, null).ToString().Equals(""))
  {
    sbSql.Append(pi.Name + "=@" + pi.Name + ",");//SID=@SID
    // 增加参数到List<SqlParameter>里
    paras.Add(new SqlParameter("@" + pi.Name, pi.GetValue(model, null)));
  }
  }
}
// 去掉最后一个 , 豆号
string strSql = sbSql.ToString().Trim(',');
strSql += " where SID=@SID";
// 记得加上主键
paras.Add(new SqlParameter("@SID", model.SID));
return dbHelper.ExecuteCommand(strSql, paras.ToArray()) > ;
// 最终sbSql生成的SQL为:update Students set Name=@Name,Age=@Age,Clazz=@Clazz where SID=@SID
}

利用反射生成SQL语句的更多相关文章

  1. ASP.NET通过反射生成sql语句

    最近对接一个接口,需要通过xml序列化成实体后添加额外信息后批量插入数据库,需要手动拼sql.因为涉及多张表,拼凑很麻烦而且容易出错,所以写了两个工具方法来生成sql,先写到博客里面,以便以后不时之需 ...

  2. 反射生成SQL语句入门

    今天我们来学习学习通过反射技术来生成SQL语句. 反射提供了封装程序集.模块和类型的对象.您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型.然后,可以调用类型的方法或访 ...

  3. 4、注解反射生成SQL语句

    .任务说明         ①有一张用户表,字段包括:用户ID.用户名.昵称.年龄.性别.所在城市.邮箱.手机号:         ②使用java注解来对用户表的每个字段或字段的组合条件进行动态生成S ...

  4. 根据反射生成SQL语句

    /** * 基础查询语句 * 返回类型的属性字符串Sql * @author: InkYi * 修改时间:2016年5月11日 - 上午10:06:00<br/> * 功能说明:<b ...

  5. 通过自定义注解反射生成SQL语句

    ----------------------------------------Program.cs---------------------------------------- using Sys ...

  6. C# - 通过自定义注解反射生成SQL语句[转]

    转自http://blog.163.com/jong_cai/blog/static/87028045200902033553581/ -------------------------------- ...

  7. 反射生成SQL语句

    public static int Reg(Model ml) { bool b = true; Visit vt = new Visit(); StringBuilder builder = new ...

  8. 两种查看EFCore生成Sql语句的方法

    一.利用反射生成查询语句 该方法转载自:https://jhrs.com/2019/28488.html (略有修改) using Microsoft.EntityFrameworkCore.Quer ...

  9. 利用反射自动生成SQL语句(仿Linq)

    转:http://www.cnblogs.com/the7stroke/archive/2012/04/22/2465597.html using System; using System.Colle ...

随机推荐

  1. Android学习之 博客专栏 与 资料

    android | Android Developers Android学习系列 - 谦虚的天下 - 博客园 android基础 - 生如夏花之灿烂 - 博客园 Android开发 - 皓月繁星 - ...

  2. Filter 配置多个URL-PATTERN

    Filter 配置多个URL-PATTERN 最近做项目遇到一个Filter需要配置多个url-pattern,上网查了下资料,经测试,现总结下 一.完全错误的方式  Java代码   <fil ...

  3. Java比较运算符

    注意哦: 1.  > . < . >= . <= 只支持左右两边操作数是数值类型 2.  == . != 两边的操作数既可以是数值类型,也可以是引用类型 public clas ...

  4. DAS 原文出自【比特网】

    http://www.360doc.com/content/13/1114/11/10504424_329109113.shtml

  5. hdu 1050 Moving Tables

    http://acm.hdu.edu.cn/showproblem.php?pid=1050 这个题我首先直接用的常规贪心,用的和那个尽可能看更多完整节目那种思路.但是.......一直WA....T ...

  6. 【C#】Entity Framework 增删改查和事务操作

    1.增加对象 DbEntity db = new DbEntity(); //创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长主键外),如果不赋值,则会数据库中会被设置为NULL(注意是否 ...

  7. ApkTool动态打包

    引言: APK在推广的时候可能会须要动态打包APK.比方公布到不同渠道的时候,须要在manifest文件里改动渠道信息.或者app在推广的时候.须要在apk包里面加上推广人信息等. 环境变量: 1.J ...

  8. [React] React Fundamentals: Component Lifecycle - Mounting Basics

    React components have a lifecycle, and you are able to access specific phases of that lifecycle. Thi ...

  9. php中error_report函数的含义及各参数含义

    个错误级别,如下: 1        E_ERROR          致命的运行时错误.错误无法恢复过来.脚本的执行被暂停2        E_WARNING        非致命的运行时错误.脚本 ...

  10. cocos2d-x 3.0 Armature jsb 初体验

    有段时间没有写游戏代码了,这回来主要任务是要用jsb构建一个aprg动作游戏,看到3.0官方已经绑定好了armature的js函数,先来体验一把 3.0新建项目比2.2方便了很多,在终端运行tools ...