利用反射生成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 + "=@" + 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
}
上一篇:storm kafka整合


下一篇:vue2.0开发环境下解决跨域问题