.net 简易数据库操作框架1.4
2017-09-22 16:22
411 查看
上节写了生成新增的sql语句,然后写生成修改的sql语句
/// <summary> /// 生成修改的sql和SqlParameter /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="t">对象</param> /// <returns></returns> public List<object> Update<T>(T t) { object[] objAttrs = null; List<string> listColumnName = new List<string>(); Type objType = typeof(T); objAttrs = objType.GetCustomAttributes(typeof(DBAttribute), true); StringBuilder sb = new StringBuilder();//生成的sql语句 sb.Append("Update "); //读取拼接表名 if (objAttrs.Length > 0) { DBAttribute attr = objAttrs[0] as DBAttribute; sb.Append(attr != null ? attr.FiledName : objType.Name); } else { sb.Append(objType.Name); } sb.Append(" set "); List<PropertyInfo> pro = objType.GetProperties().ToList(); SqlParameter spl= null; StringBuilder sb1 = new StringBuilder(); //获取需要修改的属性 for (int i = 0; i < pro.Count; i++) { objAttrs = pro[i] 4000 .GetCustomAttributes(typeof(DBAttribute), true); if (objAttrs.Length > 0) { DBAttribute attr = objAttrs[0] as DBAttribute; if (attr != null) { if (attr.FieldProps != "0"|| attr.FieldProps != "") { if (attr.FieldProps == "1"|| attr.FieldProps == "2") { //写条件 sb1.Append(string.Format(" where {0}=@{1}", pro[i].Name, pro[i].Name)); spl = new SqlParameter("@" + pro[i].Name, (pro[i].GetValue(t, null) == null ? "" : pro[i].GetValue(t, null)).ToString()); } pro.Remove(pro[i]); i--; } } } } for (int i = 0; i < pro.Count; i++) { if (i==0) { sb.Append(string.Format("{0}=@{1}",pro[i].Name, pro[i].Name)); } else { sb.Append(string.Format(" , {0}=@{1}", pro[i].Name, pro[i].Name)); } } SqlParameter[] par = new SqlParameter[spl == null? pro.Count() : pro.Count()+1]; for (int i = 0; i < pro.Count; i++) { par[i] = new SqlParameter("@" + pro[i].Name, (pro[i].GetValue(t, null) == null ? "" : pro[i].GetValue(t, null)).ToString()); } if (spl != null) { par[par.Length - 1] = spl; } return new List<object>() { sb.ToString()+sb1.ToString(), par }; } /// <summary> /// 生成修改的sql和SqlParameter /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="sql">执行的语句</param> /// <param name="args">参数</param> /// <returns></returns> public List<object> Update<T>(string sql, params object[] args) { object[] objAttrs = null; Type objType = typeof(T); objAttrs = objType.GetCustomAttributes(typeof(DBAttribute), true); StringBuilder sb = new StringBuilder();//生成的sql语句 sb.Append("Update "); //读取拼接表名 if (objAttrs.Length > 0) { DBAttribute attr = objAttrs[0] as DBAttribute; sb.Append(attr != null ? attr.FiledName : objType.Name); } else { sb.Append(objType.Name); } sb.Append(" set " + sql); SqlParameter[] par = new SqlParameter[args.Length]; for (int i = 0; i < par.Length; i++) { par[i] = new SqlParameter("@" + i, args[i]); } return new List<object>() { sb.ToString(), par }; }
第一次写博客,很多地方不懂,欢迎大家批评指正,谢谢!联系QQ:1831996117.加好友注明是博客
相关文章推荐
- .net 简易数据库操作框架1.5
- .net 简易数据库操作框架1.6
- .net 简易数据库操作框架1.3
- .net 简易数据库操作框架1.2
- .net 简易数据库操作框架1.1
- .Net使用对象关系映射框架Entity Framework操作数据库及其内容
- php的CI框架相关数据库操作
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 (2011-10-25 17:01:25)
- java的hibernate框架操作数据库使用泛型T
- FLEAPHP框架的数据库操作
- 使用MyBatis框架进行数据库的增删改查操作
- Java -- 数据库 多表操作,1对多,多对多,1对1。 基于dbutils框架
- (一一三)使用系统自带框架操作SQLite3数据库
- 【.NET】Log4net将操作日志写入数据库
- laravel框架总结 -- 数据库操作
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式'
- 03创建数据库和表以及测试数据库的操作(单元测试框架)
- 使用 .NET 框架中集成的读取器和写入器很容易操作 XML 数据
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
- yii2框架数据库的常用操作