/// <summary> /// 哈希表生成Insert语句 /// </summary> /// <param name="tableName">表名</param> /// <param name="ht">Hashtable</param> /// <returns>int</returns> public static StringBuilder InsertSql(string tableName, Hashtable ht) { StringBuilder sb = new StringBuilder(); sb.Append(" INSERT INTO "); sb.Append(tableName); sb.Append("("); StringBuilder sp = new StringBuilder(); StringBuilder sbPrame = new StringBuilder(); foreach (string key in ht.Keys) { if (ht[key] != null) { sbPrame.Append(",[" + key + "]"); sp.Append("," + DbParameters.CreateDbParmCharacter() + "" + key); } } sb.Append(sbPrame.ToString().Substring(1, sbPrame.ToString().Length - 1) + ") VALUES ("); sb.Append(sp.ToString().Substring(1, sp.ToString().Length - 1) + ")"); return(sb); }
/// <summary> /// 拼接删除SQL语句 /// </summary> /// <param name="tableName">表名</param> /// <param name="pkName">字段主键</param> /// <returns></returns> public static StringBuilder DeleteSql(string tableName, string pkName) { return(new StringBuilder("DELETE FROM " + tableName + " WHERE " + pkName + " = " + DbParameters.CreateDbParmCharacter() + pkName + "")); }
/// <summary> /// 泛型方法,反射生成UpdateSql语句 /// </summary> /// <param name="entity">实体类</param> /// <returns>int</returns> public static string UpdateSql <T>(object entity) { string cacheKey = string.Format("T-SQL:UPDATE:{0}:{1}", typeof(T).Name, typeof(T).FullName.GetMd5Code()); string cache = CacheFactory.GetCache().Get <string>(cacheKey); if (string.IsNullOrEmpty(cache)) { StringBuilder sb = new StringBuilder(); Type type = entity.GetType(); //表名 string table = EntityAttributeHelper.GetEntityTable <T>(); //主键 string keyField = EntityAttributeHelper.GetEntityKey <T>(); //获取不做映射的字段 List <string> notMappedField = EntityAttributeHelper.GetNotMappedFields <T>(); PropertyInfo[] props = type.GetProperties(); sb.Append(" UPDATE "); sb.Append(table); sb.Append(" SET "); bool isFirstValue = true; foreach (PropertyInfo prop in props) { if (!notMappedField.Contains(prop.Name)) { object value = prop.GetValue(entity, null); if (value != null && keyField != prop.Name) { if (value.GetType() == typeof(DateTime)) { var time = (DateTime)value; if (time.Ticks != 0 && time != DateTime.MinValue && time != SqlDateTime.MinValue.Value) { if (isFirstValue) { isFirstValue = false; sb.Append("[" + prop.Name + "]"); sb.Append("="); sb.Append(DbParameters.CreateDbParmCharacter() + prop.Name); } else { sb.Append(",[" + prop.Name + "]"); sb.Append("="); sb.Append(DbParameters.CreateDbParmCharacter() + prop.Name); } } } else { if (isFirstValue) { isFirstValue = false; sb.Append("[" + prop.Name + "]"); sb.Append("="); sb.Append(DbParameters.CreateDbParmCharacter() + prop.Name); } else { sb.Append(",[" + prop.Name + "]"); sb.Append("="); sb.Append(DbParameters.CreateDbParmCharacter() + prop.Name); } } } else { if (prop.PropertyType.IsNullableType()) { sb.Append(",[" + prop.Name + "]"); sb.Append("="); sb.Append(DbParameters.CreateDbParmCharacter() + prop.Name); } } } } sb.Append(" WHERE ").Append(keyField).Append("=").Append(DbParameters.CreateDbParmCharacter() + keyField); cache = sb.ToString(); CacheFactory.GetCache().Add(cacheKey, cache); } return(cache); }