利用反射生成SQL语句

// 修改学员信息的方法
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 + "[email protected]" + pi.Name + ",");//[email protected]
            // 增加参数到List<SqlParameter>里
            paras.Add(new SqlParameter("@" + pi.Name, pi.GetValue(model, null)));
          }
      }
    }
    // 去掉最后一个 , 豆号
    string strSql = sbSql.ToString().Trim(‘,‘);
    strSql += " where [email protected]";
    // 记得加上主键
    paras.Add(new SqlParameter("@SID", model.SID));
    return dbHelper.ExecuteCommand(strSql, paras.ToArray()) > 0;
    // 最终sbSql生成的SQL为:update Students set [email protected],[email protected],[email protected] where [email protected]
} 

时间: 2024-10-07 06:39:45

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

C#根据反射生成sql语句(Update语句)

今天有人问我Update语句怎么搞,想了一下大致思路就是用特性去标识一下,主键,然后再去用反射的方式拼sql语句. 想着晚上再写,又想了想的确好久没写博客了,也好久没正儿八经写代码了,就顺手给写了下来. 一.主键特性 /// <summary> /// 主键特性(在实体类的上方加这个特性,指定该类的主键名称) /// </summary> [AttributeUsage(AttributeTargets.Class)] public class PrimaryKeyAttribut

根据反射生成SQL语句

1 /** 2 * 基础查询语句 3 * 返回类型的属性字符串Sql 4 * @author: InkYi 5 * 修改时间:2016年5月11日 - 上午10:06:00<br/> 6 * 功能说明:<br/> 7 * @param clazz 8 * @return "id,name,sex....." 9 */ 10 private String baseSelectSQL(Class clazz){ 11 StringBuffer sb = new St

模拟Hibernate动态生成SQL语句

这里有一个xml配置文件,也就是Hibernate框架中会用到的POJO和数据库的映射文件 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://www.hibernate.org/dtd/hibernate-

使用注解生成sql语句

注解介绍: java SE5内置了三种,定义在java.lang中的注解: @Override,表示当前的方法定义将覆盖超类中的方法. @Deprecated,如果程序员使用了注解为它的元素,那么编译器会发出警告信息. @SuppressWarnings,关闭不当的编译器警告信息. 元注解 @Target 用来定义你的注解应用于什么地方,例如是一个方法或者一个域. CONSTRUCTOR :构造器的声明 FIELD : 域声明 METHOD :方法声明 PACKAGE : 包生明 TYPE :

【C#】通过反射生成sql

1.定义特性标志表或表字段 public class ExtendAttribute { /// <summary> /// 表示在自动生成SQL语句时,不处理该字段 /// </summary> [AttributeUsage(AttributeTargets.Property)] [Serializable] public class ExcludeFieldAttribute : Attribute { /// <summary> /// 获取元数据的特性 ///

NO2:自动生成sql语句

SQL语句自动生成工具 大哉乾元 2016/2/26   作者原创转载请注明出处 前言 这个程序是几年前做成的,现在整理成文档和大家分享,当时参与的项目中大量使用的sql语句,所以SqL语句的代码输入占了较大的比例,为了提高sql语句的书写正确性和输入效率,做成了这个自动生成工具. 一:ADO.NET中执行sql文,对应的sql语句嵌入到vb.net的代码内,分析sql的语法格式个特点: 已检索语句为例分析: A:必须是已select开头 B:检索的字段名(一些系统函数:可选,例如max,sum

动态产生和删除相关组件并生成SQL语句

(********************************************************************************************************** * * * 窗体描述:产生SQL条件语句,系统模块 [计划管理-打卡] 打印大/小卡 *           能够根据维护进去的条件,生成过软类型: 缸内过软.缸外过软.连续皂洗.空白 * * 关键功能点:1.动态产生和删除子/父等相关组件按钮(注意移动组件位置) *        

python读取excel表格生成sql语句 第一版

由于单位设计数据库表·,都用sql.不知道什么原因不用 powerdesign或者ermaster工具,建表很痛苦  作为程序猿当然要想办法解决,用Python写一个程序解决 需要用到 xlrd linux下 sudo pip install xlrd 主要是适用于db2数据库 excel 表结构 其中 number是不正确的字段类型 不知道同事为啥这么设置.这里程序里有纠错,这个程序就是将sql语句拼好. __author__ = 'c3t' # coding:utf-8 import xlr

excel生成sql语句

很多时候,我们想把excel中数据导入到数据库中. 方法有很多种,比如直接拷贝然后黏贴进编辑状态的框中,这种情况有个弊端,就是excel中每列的数据必须和数据库中一一对应,这个很难,基本上不太可能,数据库中有很多的自动增长或者有默认值得数据,如果要调整成一一对应,调整excel的时间可谓花费不少时间. 下面推荐一种可以在excel中直接生成sql语句,复制进去执行就好了.思路是很清晰的,就是有个sql模板,excel中数据套进模板就可以了,下面看看excel中已经有这种强大的功能函数,直接调用就